BeforeTest不会在<test>标记中的每个Test方法之前运行

时间:2016-02-09 06:57:10

标签: java annotations testng

进一步询问SO-4310964,我在test.org处完成了对注释的描述。

  

@BeforeTest:带注释的方法将在任何测试方法之前运行   属于test标记内的类的运行。

现在我们在代码中的内容如下:

MyTests.java

public class MyTests {
    @BeforeTest
    public void preTest(){
        //Want to perform some action, suppose clear a Hashmap
        System.out.println("Before Test Called!");
    }

    @Test(groups = {"SanityTests"}, testName = "test1")
    public void Test1(){
            System.out.println("test1");
    }

    @Test(groups = {"SanityTests"}, testName = "test2")
    public void Test2(){
            System.out.println("test2");
    }
}

执行完整性的test.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="SanityTests" verbose="1" >
    <listeners>
        <listener class-name="com.android.MyTestsListener" />
    </listeners>

    <test name="sanityAndroid">
        <classes>
            <class name="com.android.MyTests" />
        </classes>
    </test>
</suite>

注意:我知道@BeforeMethod解决了这个问题。但据我了解@BeforeTest [preTest]方法在@Test [test1test2]方法之前运行的链接详细信息,该方法属于class内的<test> {{1}}标记。我哪里错了?

1 个答案:

答案 0 :(得分:1)

BeforeTest :带注释的方法将在属于<test>标记内的类的任何测试方法运行之前运行

专注于“之前任何测试方法”,而不是每种测试方法。

现在,如果测试标记有以下两个类:

<test name="sanityAndroid">
    <classes>
        <class name="com.android.MyTests1" />
        <class name="com.android.MyTests2" />
    </classes>
</test>

类MyTest1将@Test方法作为test1,test2和 MyTest2类将@Test方法作为test3,test4。

因此,BeforeTest方法将在任何测试方法之前运行,即test1,test2,test3,test4属于<test>标签内的类MyTest1,MyTest2。

执行成为BeforeTest - &gt; (test1,test2,test3,test4)依赖于依赖。

类似于AfterTest:在属于<test>标签内的类的所有测试方法运行后,带注释的方法将运行