TestNG @BeforeTest эквивалент в JUnit - PullRequest
2 голосов
/ 18 декабря 2011

Я нашел сравнение в http://www.mkyong.com/unittest/junit-4-vs-testng-comparison/. Как подготовить что-то вроде @BeforeTest в JUnit?

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Не так хорошо знаком с TestNG, но, насколько я понимаю, вы можете сделать что-то похожее с комбинацией Categories, Suite и @BeforeClass / @AfterClass.

Например:

import org.junit.BeforeClass;
import org.junit.experimental.categories.Categories;
import org.junit.experimental.categories.Categories.IncludeCategory;
import org.junit.runner.RunWith;
import org.junit.runners.Suite.SuiteClasses;


@RunWith(Categories.class)
@SuiteClasses(MyClassTest.class)
@IncludeCategory(IntegrationTest.class)
public class StaticTests {
    @BeforeClass
    public static void setUp() {
        System.out.println("Hello, World!");
    }
}

Затем в ваших тестах пометьте вещи как @Category(IntegrationTest.class), и вы получите логическую группу тестов - из нескольких различных классов тестов - которые вы можете запустить инициализациюоколо.

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

Как упоминает Мэтью Фарвелл , есть также TestRule с, которые дают вам более тонкий контроль для настройки вокруг набора тестов.

1 голос
/ 18 декабря 2011

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

Если вам нужно более сложное поведение, см. TestRule , в частности ExternalResource .

...