Подтвердить что ты не робот

JUnit: @Прежде, чем только для некоторых методов тестирования?

У меня есть общий код, который я использовал для метода, помеченного @Before. Тем не менее, не обязательно, чтобы весь этот код запускался для каждого отдельного теста. Есть ли способ отметить его, чтобы метод @Before выполнялся только до определенных тестов?

4b9b3361

Ответ 1

Просто удалите те тесты, которые не нуждаются в установочном коде, в отдельный тестовый класс. Если у вас есть другой код, общий для тестов, который будет полезен для сохранения, переместите это в класс-помощник.

Ответ 2

Или используйте TestNG. Это дает вам более тонкий контроль над тестами.

Ответ 3

В JUnit можно также выполнить Assume. И затем вы можете проверить имя метода, для которого вы хотите обработать @Before.

public class MyTest {
     @Rule
     public TestName testName = new TestName();

     @Before
     public void setUp() {
       assumeTrue(testName.getMethodName().equals("myMethodName"));
       // setup follows
     }
}

Просмотрите тему, чтобы узнать больше о @Rule.

Ответ 4

Не уверен в @Before, но недавно я придумал стратегию для @After блока для выборочного запуска. Реализация была прямой. У меня есть флаги, установленные для значений по умолчанию как часть тестового класса. Они имеют значение reset по умолчанию в классе @Before. В классе мне нужно делать что-то конкретное для флага, я устанавливаю эти флаги и в @После проверки значений флага для выполнения соответствующих заданий.