TestNG:通过方法或类的测试运行测试是否应该调用@BeforeSuite方法?

时间:2017-08-16 15:11:43

标签: java testing testng

我有一套测试,其中有一个使用@BeforeSuite注释的setUp方法,该方法在套件之前运行。偶尔我需要单独运行测试或在类中进行所有测试。有没有办法让我的setUp方法在这些之前运行。

我的理解是TestNG创建了一个默认套件,因此我不应该如何运行测试,如果我有一个使用@BeforeSuite注释的方法,它应该在所有测试之前运行。然而,这对我不起作用。它仅在我运行完整套件时运行。

xml套件。如果我从这里进行测试就可以了。 (右键单击,选择运行)

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="OvernightSuite">
<test name="Test Sequential" preserve-order="true" parallel="none">
    <classes>
        <class name="com.myComp.test.cases.setUpClass" />
        <class name="com.com.myComp.test.cases.testClass1" />
        <class name="com.com.myComp.test.cases.testClass2" />
    </classes>
</test>
</suite>

设置课程

public class setUpClass{
@BeforeSuite
public void setUp() {
    populateDataSources();
    populateVariables();
}
    @Test
    public void datasourcesWereSetUpTest() {
        boolean result = method.read();
        assert(result);
    }
}

其中一个测试类。如果我在这里运行,(突出显示,右键单击,选择运行),则不会执行beforeSuite。

public class testClass1{
    @Test
    public void someTest() {
        boolean result = method.read();
        assert(result);
    }
}

2 个答案:

答案 0 :(得分:0)

只要@BeforeSuite带注释的方法是测试类(其中包含一个或多个@Test方法的方法)的一部分,它就可以在不需要做任何额外操作的情况下工作。< / p>

但是如果你的@BeforeSuite方法属于不同的类,那么执行它的唯一方法就是执行以下操作之一:

  • 创建一个套件xml文件,其中包含包含@BeforeSuite方法的类以及您的测试类。 (或)
  • 创建一个实现接口org.testng.ISuiteListener的TestNG侦听器,并将@BeforeSuite的逻辑移动到onStart(),然后通过@Listeners注释(或)连接此侦听器<listeners>标记(或)通过Service Loader方法。有关详细信息,请参阅我的this博文。

答案 1 :(得分:0)

您是否尝试过以下任何选项:

'@BeforeTest'

在&lt;&lt;包含的任何测试方法之前执行设置方法。测试&gt; testng.xml文件中的标记。

'@BeforeMethod'

在任何注释为@Test的测试方法之前执行设置方法。

http://howtesting.blogspot.ie/2012/12/difference-between-beforetest-and.html