我有一个测试类,它有一个@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">
禁用@Test
方法是可行的,但您的类上必须至少有一个测试方法,否则TestNG不会在其中运行任何东西,所以可能会添加一个空的测试方法?只为其配置方法运行一个类是一种奇怪的情况,你确定这个配置不能放在另一个类中吗?
如果您将其更改为@BeforeSuite,则它将在不需要空的@Test方法并排除该方法的情况下运行。您也可以使用@test(enabled=false)直接禁用测试方法。
我最终决定只在每个@Test方法周围放一个if语句,并让该语句评估System属性。