Различная разбивка для каждого @Test в jUnit - PullRequest
17 голосов
/ 26 июля 2011

Есть ли способ определить разный анализ для каждого @Test в jUnit?

Ответы [ 3 ]

36 голосов
/ 26 июля 2011

Используйте аннотацию @After, чтобы указать метод (ы), который будет запускаться после каждого @Test.

Полный набор аннотаций, подобных этому:

  • @BeforeClass - до того, как все @Tests будут запущены
  • @Before - перед каждым @Test запускается
  • @After - после каждого @Test запускается
  • @AfterClass - после всех @Tests выполнено

Я только что понял, что, возможно, не понял вопроса. Если вы спрашиваете, как связать конкретный метод разрыва с конкретным методом @Test, аннотации не нужны: просто вызовите его в конце вашего тестового метода в finally:

@Test
public void someTest() {
    try {
        // test something
    } finally {
        someParticularTearDown();
    }
}
6 голосов
/ 26 июля 2011

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

Как только вы начнете использовать отдельные методы разбивки, обоснование того, почему вы захотите сгруппировать тесты в одном классе, не станет очевидным.Таким образом, вы можете справиться с этой ситуацией, проявляя гибкость в отношении того, как группировать свои тесты в классах.

1 голос
/ 27 июля 2011

Нет простого способа сделать это в JUnit. С TestNG вы можете поместить свои методы в группы, чтобы вы могли определить конкретные @ BeforeMethod / @ AfterMethod, которые будут работать только вокруг определенных групп.

...