Я разрабатываю тестовый класс для своего приложения. У меня есть 3 теста и на основе метода тестирования, я хочу иметь разные настройки. Вот то, что мой код выглядит следующим образом:
Значение переменной не изменяется в setup()
`public class MainActivityTest extends
ActivityInstrumentationTestCase2<MainActivity> {
int counter = 0;
public MainActivityTest(Class<MainActivity> name) {
super(name);
}
public MainActivityTest() {
super(MainActivity.class);
}
protected void setUp() throws Exception {
super.setUp();
switch (counter) {
case 0:
//do setup 1
break;
case 1:
//do setup 2
break;
case 2:
//do setup 3
break;
default:
break;
}
counter++;
}
public void testTest1() {
//do test 1
assertEquals(1, counter);
}
public void testTest2() {
//do test 2
assertEquals(2, counter);
}
public void testTest3() {
//do test 3
assertEquals(3, counter);
}
protected void tearDown() throws Exception {
super.tearDown();
}`
Как сказано в документации, метод установки называется на тест. Проблема в том, что testTest2 и testTest3 сбой, потому что значение счетчика равно 1 в обоих из них. Я предполагал, что он будет увеличиваться каждый раз при вызове настройки.
Независимо от того, получаете ли вы эту работу, это не выглядит правильным для меня. Функция настройки предназначена для выполнения общей настройки для следующих тестов; если это необходимо для каждого из них, то на самом деле не так много пользы в его использовании, возможно, лучше разобраться. –
^^^ Алекс правильный. Кроме того, вы не можете быть уверены, что ваши тесты будут выполняться в том порядке, который вы хотите, поэтому, возможно, все они потерпят неудачу в своих утверждениях 'assertEquals'. –