JUnit: @ только для некоторых методов тестирования? - PullRequest
34 голосов
/ 10 октября 2009

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

Ответы [ 4 ]

33 голосов
/ 10 октября 2009

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

3 голосов
/ 10 октября 2009

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

2 голосов
/ 11 марта 2015

Этого также можно добиться с помощью Предположим, от JUnit. И тогда вы можете проверить имя метода, для которого вы хотите обработать @Before.

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

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

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

0 голосов
/ 03 июля 2017

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...