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