只运行@BeforeClass方法的最佳方法

时间:2012-01-19 22:46:48

标签: ant testng

我有一个带有@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">

3 个答案:

答案 0 :(得分:0)

禁用@Test方法会有效但你必须在你的类上至少有一个测试方法,否则TestNG不会运行任何内容,所以可能添加一个空的测试方法?仅仅为其配置方法运行类是一种奇怪的情况,你确定这个配置不能放在另一个类中吗?

答案 1 :(得分:0)

如果将其更改为@BeforeSuite,则无需使用空@Test方法并排除该方法即可运行。您也可以使用@Test(enabled = false)直接禁用测试方法。

答案 2 :(得分:0)

我最终决定在每个@Test方法周围放置一个if语句,并让语句评估一个System属性。