2012-01-19 5 views
0

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

@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?

Edit:

Вот как я определяю задачу в моем 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"> 

ответ

0

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

0

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

+0

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

0

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

+0

Если я заменил \ @BeforeClass на \ @BeforeSuite, а затем выполните несколько тестов параллельно, тогда будет запущен только один из них. – Thomas

+0

Я отредактировал вопрос, чтобы показать, что у меня есть в файле build.xml, если это делает ситуацию более ясной. – Thomas

+0

Вы также можете использовать @BeforeTest. Я запускаю свой тест не напрямую через ant, а с помощью пакета suite.xml, выполняемого ant. Выглядит что-то вроде этого ' <имя класса = "NoPackageTest" /> <тест имя = "Regression1"> <имя класса = "test.sample.ParameterSample" /> <имя класса = "тест. образец. Параметр Тест "/> ' из [link] http://testng.org/doc/documentation-main.html – Tarken

Смежные вопросы