Junitのテストコードは次のようになります。JUnitテストで手動bean autowiringが機能しない
private static boolean setupDone = false;
private Box box;
@Before
public void setup(){
if (setupDone){
return true;
}
box = new BoxCreator(this.applicationContext);
applicationContext.getAutowireCapableBeanFactory().autowireBean(box);
setupDone = true;
}
@Test
public void Test1(){
String response = box.getBoxResponse();
...asserts go here as usual....
}
@Test
public void Test2(){
String response = box.getBoxResponse();
...asserts go here as usual....
}
ここで、setupメソッドは、setupDone変数によって必要に応じて1回だけ実行されます。
Boxオブジェクトのインスタンスを作成した後の設定メソッドは、上記のコードのようにautowearします。意図は、このクラスのシングルトンを持ち、すべてのテストで同じインスタンスを使用することです。
今の問題は、いずれの試験方法は、ボックスオブジェクトの値を取得し、第二の試験方法はヌルとしてボックスを見て最初に実行することです。 2番目のテストメソッドが実行されたときになぜnullになるのか不明です。
同じテストクラスで異なるテストが異なるアプリケーションコンテキストを持つと言うことを意味しますか? – Hary
各テストには、異なる 'this'とすべてのインスタンス変数があります。静的変数はクラスに残っており、 'this'のどのインスタンスに関係なく同じです。 –