2015-06-12 1 views
2

Я использую Robolectric для модульного тестирования. У меня есть тестовый класс сказать MainActivityTest, который имеет несколько методов тестирования:Использование Robolectric, как запускать и дорабатывать материал до и после всех методов тестирования в тестовом классе выполняется

@RunWith(...) 
@Config(...) 
public class MainActivityTest { 
    @Test 
    public void testMethod1() { 
     //... 
    } 

    @Test 
    public void testMethod2() { 
     //... 
    } 

    // other test methods 
} 

Я хочу, чтобы выполнить метод (метод инициализации) только один раз, прежде чем какой-либо метод тестирования выполняется, и другой метод, после всех методов испытаний выполняются. Как я могу это сделать? Я знаю, что могу решить первый вопрос, вызвав метод init в конструкторе, но как решить второй вопрос? Я знаю, что я могу подклассифицировать свой класс приложения и использовать это приложение, но для меня это неловко, поскольку я использую AndroidAnnotations, и реальный класс приложения, который я использую, является окончательным, и я хочу сделать это только в этом тесте класс, а не весь тестовый класс. Интересно, есть ли лучший способ сделать это.

+0

Посмотрите '@ Before' и' @ After' аннотаций JUnit –

+0

Параметр '@ Before' и Аннотации '@ After' используются для аннотирования метода, который будет выполняться до или после запуска каждого тестового метода, а не один раз для всех методов тестирования. –

+0

Можете ли вы поделиться тем, что вы собираетесь делать в этих методах? –

ответ

4

Вы хотите @BeforeClass и @AfterClass.

Обратите внимание, что методы, которые они аннотируют, должны быть статическими.

См:

http://junit.sourceforge.net/javadoc/org/junit/BeforeClass.html http://junit.sourceforge.net/javadoc/org/junit/AfterClass.html

Так, например:

@BeforeClass 
public static void beforeEverything() { 
    // runs just once before all tests 
} 

@Before 
public void setup() { 
    // runs before every test 
} 

@After 
public void breakdown() { 
    // runs after every test 
} 

@AfterClass 
public static void afterEverything() { 
    // runs just once after all the tests 
} 
+0

Спасибо, это то, что я находясь в поиске. Хотя методы '@ BeforeClass' и' @ AfterClass' должны быть статическими, но кажется, что каждый тестовый метод имеет свой собственный экземпляр тестового класса, поэтому 'static' действительно имеет смысл. –

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

  • Нет связанных вопросов^_^