testXX 実行のたびにTestクラスがインスタンス化される
JUnitについて、勘違いしていたことがわかった。
(誤) テストクラスからはひとつのインスタンスしか作られない。このひとつのインスタンスの #setUpや #testXX が実行される。
(正) #testXX実行のたびに、新しいインスタンスが生成される。
参考リンク:
http://www.alles.or.jp/~torutk/oojava/maneuver/2000/6-3.html
TestRunnerは、各テストメソッド(testXXX)をそれぞれ別のインスタンスで実行する。
こうすることで↓のようなメリットがえられる。
- どの順で実行してもテスト結果が変わらない
- testXX間での依存関係を排除できる(← たとえば、testAで、ある変数fooが初期化されていることがtestB実行時の前提条件というのは、結果が一定しないまずいデザイン)
- testAが変数fooに何をいれようと、何をいれなかろうと、他のtestXXには影響がでない