2016-10-09 3 views
1

У меня есть набор тестов, который проверяет две разные вещи в одном классе. У меня есть метод before, который инициализирует некоторые поля для используемых методов тестирования. Тем не менее, у меня есть группа методов тестирования, в которой используется первый набор полей, а другая группа, которая использует вторую, но не первую. Я знаю, что можно разделить действие перед действием перед разными методами, но также можно указать, какой из них выполняется перед каждым тестом?Можно ли указать, какой метод Before запускается в JUnit, и если да, то каким образом?

Конкретный пример:

@Before 
public void before1() {...} 

@Before 
public void before2() {...} 

@Test 
public void test1() { 
    //Only before1 runs 
} 

@Test 
public void test2() { 
    //Only before2 runs 
} 

Это простое представление, но у меня есть гораздо больше тестов, которые используют любой из этих befores.

+0

Гарантия на выполнение '@ Before' не гарантируется, так как нет гарантии на выполнение' @ Test' порядка выполнения. –

ответ

1

Нет гарантии на выполнение заказа @Before так же, как нет гарантии на исполнение @Test.

Решение состоит в том, чтобы выполнить любую установку, в которой тест зависит от самого @Test, и использовать перед началом теста @Before для общей настройки.

2

Все, что вы указали в своем вопросе, указывает на разделение ваших тестов на 2 отдельных класса. Я предполагаю, что две группы, которые у вас есть, проверяют различные функции вашего кода и могут даже иметь некоторую общность в именах тестов. Возьмите все тесты, требующие before1, в тестовый класс и все тесты, требующие before2 в другой класс испытаний. Вы можете назвать эти новые тестовые классы в соответствии с группировкой поведения, которое вы тестируете.

Например, если половина ваших тестов относится к сценариям успеха, а половина тестирует сценарии отказа, поместите их в классы с именем примерно FooSucceedsTest и сбои в FooFailsTest.

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