Тесты Junit Suite, по этапам: все @Before, затем все @Test, затем все @After - PullRequest
1 голос
/ 19 августа 2010

Мне нужен бегун junit, который выполняет все методы @Before, затем все методы @Test, а затем все методы @After.

Так работают мои системные тесты.Методы @Before запускаются для настройки тестовых данных и сценариев.Приложение запущено.Затем методы @Test запускаются с приложением, работающим в фоновом режиме.Эти методы @Test могут изменить данные или ответить на приложение.Затем фреймворк ожидает завершения приложения.После этого запускаются методы @After для проверки результатов теста.

Я уже использую аннотации junit, методы подтверждения и другие различные биты.Но я просто не могу понять, как использовать юниты для запуска тестовых методов таким образом.В junit 4.8 я не мог придумать ни головы, ни хвоста интерфейса «Компьютер», ни понять, как применить к этому Правила.

Ответы [ 2 ]

1 голос
/ 20 августа 2010

Это не то, что делает JUnit.У JUnit есть философия дизайна, которая подчеркивает независимые модульные тесты.Таким образом, это не естественная основа для системных тестов.То, что вы хотите сделать, хорошо вписывается в TestNG (который в качестве цели проектирования пытается охватить как модульные, так и системные тесты).

В JUnit @Before и @After запускаются до и после каждый тестовое задание.Вы можете поместить эти вещи в JUnit с помощью пакета, который ссылается на все ваши тесты и отвечает за все настройки и демонтаж, поэтому методы Suite @BeforeClass и @AfterClass запускаются до и после пакета, что, если вы организуете егоправильно могли бы быть все ваши системные тесты.

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

0 голосов
/ 13 марта 2014

Я думаю, что вы можете решить эту проблему, сделав только один фактический метод тестирования, который просто вызывает ваши реальные тесты, которые вы не объявляете как ssuch.

Вроде как:

@Before
public void beforeTest(){}

@After
public void afterTest(){}

@Test
public void test(){
    test1();
    test2();
    test3();
}

public void test1(){}

public void test2(){}

public void test3(){}
...