Мой тестовый код Junit выглядит следующим образом.Ручное автообучение фасолей не работает в тесте JUnit
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....
}
В настоящее время происходит то, что метод установки запускается только один раз по желанию в силу переменной setupDone.
Метод установки после создания экземпляра объекта Box автоматически выполняет его, как показано в приведенном выше коде. Намерение состоит в том, чтобы иметь одноэлемент этого класса и использовать один и тот же экземпляр в каждом тесте.
Теперь проблема заключается в том, что, какой бы метод проверки не выполнялся, сначала получает значение объекта box, а второй метод проверки видит в поле как null. Не уверен, почему он становится нулевым, когда выполняется второй метод тестирования.
Значит, вы хотите сказать, что разные тесты в одном классе тестов будут иметь разные прикладные контексты? – Hary
Каждый тест имеет разные «это» и все его переменные экземпляра. Статические переменные остаются с классом и одинаковы независимо от того, какой экземпляр «этого». –