Запомните важный принцип Junit Testing: КАЖДЫЙ ЕДИНЫЙ ИСПЫТАНИЕ НЕЗАВИСИМО ОТ ДРУГОГО.. Это означает, что не имеет значения, какие тесты вы выполняете в другом порядке, они всегда должны проходить.
А что здесь делать?
Если у вас есть метод @Before, который заполняет список массива, а затем объявить этот список массива вне метода, как это:
private List<String> myList = new ArrayList<String>();
@Before
public void myMethod(){
// do something, fill your list, etc.
}
Так что, если вы находитесь в необходимости изменения этого списка массива в вашем теста, тогда у вас должна быть копия этого списка массивов в каждом из них. Помните, как я уже говорил, тесты должны проходить независимо от того, какой порядок они выполняются, поэтому вы не должны допускать, чтобы один тест удалял материал, чтобы другой мог начать. То, что только наверняка, заключается в том, что метод @Before будет работать раньше всего.
@Test
public void myTest() {
List<String> myCopyList = new ArrayList<String>(myList);
//work with your copy
}
Это гарантирует, что вы не будете изменять список вне метода !, и каждый тест начнется с одних и тех же данных.
Cheers
Почему бы просто не вызвать метод, который был аннотирован с помощью @Before в начале вашего теста? – Squeazer
'@ Before' запускается до каждого отдельного теста. Каждый тест выполняется изолированно. Я считаю, что есть способ иметь функцию, называемую один раз, прежде чем запускать какие-либо тесты, но через аннотацию '@ BeforeClass'. – thatidiotguy