2014-10-14 2 views
1

Я разрабатываю тестовый класс для своего приложения. У меня есть 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 в обоих из них. Я предполагал, что он будет увеличиваться каждый раз при вызове настройки.

+2

Независимо от того, получаете ли вы эту работу, это не выглядит правильным для меня. Функция настройки предназначена для выполнения общей настройки для следующих тестов; если это необходимо для каждого из них, то на самом деле не так много пользы в его использовании, возможно, лучше разобраться. –

+2

^^^ Алекс правильный. Кроме того, вы не можете быть уверены, что ваши тесты будут выполняться в том порядке, который вы хотите, поэтому, возможно, все они потерпят неудачу в своих утверждениях 'assertEquals'. –

ответ

0

Если вы сделаете свою переменную-счетчиком статичной, тесты пройдут.

Каждый тест получает свой экземпляр тестового класса и, следовательно, значение счетчика повторно инициализируется до начального значения нуля при каждом тесте.

Смежные вопросы