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



我有一个测试类,它有一个@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属性。

相关内容

  • 没有找到相关文章