TestNG注解练习:
1)TestDBConnection.java
package com.hf.testng; import org.testng.annotations.Test; public class TestDBConnection { @Test public void runOtherTest1(){ System.out.println("@Test-- runOtherTest1"); } @Test(groups = {"group2"}) public void runOtherTest2(){ System.out.println("@Test-- runOtherTest2, group2"); } @Test public void runOtherTest3(){ System.out.println("@Test-- runOtherTest3"); } }
2)DBConfig.java
package com.hf.testng; import org.testng.annotations.*; public class DBConfig { @BeforeSuite public void beforeSuit(){ System.out.println("@BeforeSuit,在该套件的所有测试都运行在注释的方法之前,仅运行一次。"); System.out.println("------------------------------------------------------------"); } @AfterSuite public void afterSuit(){ System.out.println("@AfterSuit,在该套件的所有测试都运行在注释方法之后,仅运行一次。"); } @BeforeTest public void beforeTest(){ System.out.println("@BeforeTest,注释的方法将在属于<test>标签内的类的所有测试方法运行之前运行。"); } @AfterTest public void afterTest(){ System.out.println("@AfterTest,注释的方法将在属于<test>标签内的类的所有测试方法运行之后运行。"); System.out.println("------------------------------------------------------------"); } @BeforeClass public void beforeClass(){ System.out.println("@BeforeClass,在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。"); } @AfterClass public void afterClass(){ System.out.println("@AfterClass,在调用当前类的第一个测试方法之后运行,注释方法仅运行一次。"); } @BeforeGroups public void beforeGroups(){ System.out.println("@BeforeGroups,配置方法将在之前运行组列表。 此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行。"); } @AfterGroups public void afterGroups(){ System.out.println("@AfterGroups,此配置方法将在之后运行组列表。该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行。"); } @BeforeMethod public void beforeMethod(){ System.out.println("@BeforeMethod,注释方法将在每个测试方法之前运行。"); } @AfterMethod public void afterMethod(){ System.out.println("@AfterMethod,注释方法将在每个测试方法之后运行。"); } @Test public void deConfigTest1(){ System.out.println("@Test-- deConfigTest1 -- HelloWord"); } @Test(groups = {"group1"}) public void deConfigTest2(){ System.out.println("@Test-- deConfigTest2 -- HelloWord, group1"); } @Test(groups = {"group1","group2"}) public void deConfigTest3(){ System.out.println("@Test-- deConfigTest3 -- HelloWord, group1 & group2"); } @Test(groups = {"group2"}) public void deConfigTest4(){ System.out.println("@Test-- deConfigTest4 -- HelloWord, group2"); } }
3)testng.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <!-- @BeforeSuite --> <suite name="TestAll"> <!-- @BeforeTest --> <test name="case1"> <classes> <!--<class name="com.hf.testng.TestDBConnection" />--> <class name="com.hf.testng.DBConfig" /> </classes> </test> <!-- @AfterTest --> <!-- @BeforeTest --> <test name="case2"> <classes> <class name="com.hf.testng.TestDBConnection"> <methods> <include name="runOtherTest1"></include> </methods> </class> <class name="com.hf.testng.DBConfig" /> </classes> </test> <!-- @AfterTest --> <!-- @BeforeTest --> <test name="case3"> <classes> <class name="com.hf.testng.TestDBConnection"> <methods> <exclude name="runOtherTest1"></exclude> </methods> </class> <class name="com.hf.testng.DBConfig" /> </classes> </test> <!-- @AfterTest --> <!-- @BeforeTest --> <test name="case4"> <groups> <run> <include name="group2"></include> </run> </groups> <classes> <class name="com.hf.testng.TestDBConnection"></class> <class name="com.hf.testng.DBConfig"></class> </classes> </test> <!-- @AfterTest --> </suite> <!-- @AfterSuite -->
4)运行结果:
@BeforeSuit,在该套件的所有测试都运行在注释的方法之前,仅运行一次。
------------------------------------------------------------
@BeforeTest,注释的方法将在属于<test>标签内的类的所有测试方法运行之前运行。
@BeforeClass,在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest1 -- HelloWord
@AfterMethod,注释方法将在每个测试方法之后运行。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest2 -- HelloWord, group1
@AfterMethod,注释方法将在每个测试方法之后运行。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest3 -- HelloWord, group1 & group2
@AfterMethod,注释方法将在每个测试方法之后运行。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest4 -- HelloWord, group2
@AfterMethod,注释方法将在每个测试方法之后运行。
@AfterClass,在调用当前类的第一个测试方法之后运行,注释方法仅运行一次。
@AfterTest,注释的方法将在属于<test>标签内的类的所有测试方法运行之后运行。
------------------------------------------------------------
@BeforeTest,注释的方法将在属于<test>标签内的类的所有测试方法运行之前运行。
@Test-- runOtherTest1
@BeforeClass,在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest1 -- HelloWord
@AfterMethod,注释方法将在每个测试方法之后运行。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest2 -- HelloWord, group1
@AfterMethod,注释方法将在每个测试方法之后运行。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest3 -- HelloWord, group1 & group2
@AfterMethod,注释方法将在每个测试方法之后运行。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest4 -- HelloWord, group2
@AfterMethod,注释方法将在每个测试方法之后运行。
@AfterClass,在调用当前类的第一个测试方法之后运行,注释方法仅运行一次。
@AfterTest,注释的方法将在属于<test>标签内的类的所有测试方法运行之后运行。
------------------------------------------------------------
@BeforeTest,注释的方法将在属于<test>标签内的类的所有测试方法运行之前运行。
@Test-- runOtherTest2, group2
@Test-- runOtherTest3
@BeforeClass,在调用当前类的第一个测试方法之前运行,注释方法仅运行一次。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest1 -- HelloWord
@AfterMethod,注释方法将在每个测试方法之后运行。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest2 -- HelloWord, group1
@AfterMethod,注释方法将在每个测试方法之后运行。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest3 -- HelloWord, group1 & group2
@AfterMethod,注释方法将在每个测试方法之后运行。
@BeforeMethod,注释方法将在每个测试方法之前运行。
@Test-- deConfigTest4 -- HelloWord, group2
@AfterMethod,注释方法将在每个测试方法之后运行。
@AfterClass,在调用当前类的第一个测试方法之后运行,注释方法仅运行一次。
@AfterTest,注释的方法将在属于<test>标签内的类的所有测试方法运行之后运行。
------------------------------------------------------------
@Test-- runOtherTest2, group2
@Test-- deConfigTest3 -- HelloWord, group1 & group2
@Test-- deConfigTest4 -- HelloWord, group2
@AfterSuit,在该套件的所有测试都运行在注释方法之后,仅运行一次。
===============================================
TestAll
Total tests run: 18, Failures: 0, Skips: 0
===============================================
Process finished with exit code 0