Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Лучший способ запустить только метод @BeforeClass

Автор вопроса: ThomasОтветов: 3

У меня есть тестовый класс, в котором есть метод @BeforeClass и метод @Test. Я запускаю тесты с помощью Ant. Я хотел бы знать, как лучше всего запускать только метод @BeforeClass, а не метод @Test. Вот базовая структура кода:

@BeforeClass
public void init() throws Exception {
    /* Perform test initialization */
}

@Test
public void randomTest() throws Exception {
    /* Run the test */
}

Я попытался сделать метод @Test частью группы, а затем в Ant указать свойство "excludedgroups", чтобы исключить эту группу. Я также попытался отключить метод @Test. Ни один из этих методов не работал, потому что он не запускал ни метод @Test, ни метод @BeforeClass.

Один обходной путь, который у меня есть, - создать пустой метод @Test, а затем использовать любой из указанных выше методов, но это не похоже на элегантное решение.

Есть ли лучший способ запустить только метод @BeforeClass?

Редактировать:

Вот как я указываю задачу в файле build.xml:

<testng classpathref="test.classpath"
        outputdir="${reports}"
        haltonfailure="false"
        failureProperty="tests.failed"
        useDefaultListeners="true"                   listeners="org.uncommons.reportng.HTMLReporter,org.uncommons.reportng.JUnitXMLReporter"
        parallel="classes"
        suitename="Tests"
        testname="${test.name} Tests">

testngant

Ответы

Ответ 1 · Cedric Beust

Отключение метода @Test будет работать, но у вас должен быть хотя бы один тестовый метод в вашем классе, иначе TestNG ничего не запустит в нем, так что, может быть, добавить пустой тестовый метод? Это довольно странный сценарий запуска класса только для его метода конфигурации, вы уверены, что эту конфигурацию нельзя поместить в другой класс?

Ответ 2 · Tarken

Если вы измените его на @BeforeSuite, он запустится без использования пустого метода @Test и исключения метода. Вы также можете отключить метод тестирования напрямую с помощью @Test(enabled=false).

Ответ 3 · Thomas

В конце концов я решил просто поместить оператор if вокруг каждого метода @Test и сделать так, чтобы оператор оценивал свойство System.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы