У меня есть общий код, который я использовал для метода, помеченного @Before
. Тем не менее, не обязательно, чтобы весь этот код запускался для каждого отдельного теста. Есть ли способ отметить его, чтобы метод @Before
выполнялся только до определенных тестов?
JUnit: @Прежде, чем только для некоторых методов тестирования?
Ответ 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. В классе мне нужно делать что-то конкретное для флага, я устанавливаю эти флаги и в @После проверки значений флага для выполнения соответствующих заданий.