您好,登錄后才能下訂單哦!
TestNG是誕生于JUnit3和JUnit4之間的一個測試框架,雖然在JUnit4之前誕生,但被認為更先進,NG是Next Generation的意思。TestNG擁有諸多新特性,以及消除了JUnit中的許多限制,更適合于大型項目的測試。
常用注解:
@BeforeSuite | The annotated method will be run before all tests in this suite have run. |
@AfterSuite | The annotated method will be run after all tests in this suite have run. |
@BeforeClass | The annotated method will be run before the first test method in the current class is invoked. |
@AfterClass | The annotated method will be run after all the test methods in the current class have been run. |
@BeforeTest | The annotated method will be run before any test method belonging to the classes inside the <test> tag is run. |
@AfterTest | The annotated method will be run after all the test methods belonging to the classes inside the <test> tag have run. |
@BeforeMethod | The annotated method will be run before each test method. |
@AfterMethod | The annotated method will be run after each test method. |
@BeforeGroups | The list of groups that this configuration method will run before. This method is guaranteed to run shortly before the first test method that belongs to any of these groups is invoked. |
@AfterGroups | The list of groups that this configuration method will run after. This method is guaranteed to run shortly after the last test method that belongs to any of these groups is invoked. |
@Test | A Test Case |
注解使用示例:
public class OrderTest { @BeforeSuite public void testBeforeSuite(){System.out.println("BeforeSuite");} @AfterSuite public void testAfterSuite(){System.out.println("AfterSuite");} @BeforeTest public void testBeforeTest(){System.out.println("BeforeTest");} @AfterTest public void testAfterTest(){System.out.println("AfterTest");} @BeforeClass public void testBeforeClass(){System.out.println("BeforeClass");} @AfterClass public void testAfterClass(){System.out.println("AfterClass");} @BeforeGroups(groups = "data") public void testBeforeGroups(){System.out.println("BeforeGroups");} @AfterGroups(groups = "data") public void testAfterGroups(){System.out.println("AfterGroups");} @BeforeMethod public void testBeforeMethod(){System.out.println("BeforeMethod");} @AfterMethod public void testAfterMethod(){System.out.println("AfterMethod");} @Test(groups = "data") public void testGroup1(){System.out.println("1、Belong to group data");} @Test(groups = "data") public void testGroup2(){System.out.println("2、Belong to group data");} } 執行順序: BeforeSuite BeforeTest BeforeClass BeforeGroups BeforeMethod 1、Belong to group data AfterMethod BeforeMethod 2、Belong to group data AfterMethod AfterGroups AfterClass AfterTest AfterSuite 備注: 其中BeforeGroups和AfterGroups會在指定組的所有方法執行之前和之后執行。
超時測試:
@Test(timeOut = 1000)
忽略測試:
@Test(enabled = false)
異常測試:
@Test(expectedExceptions = ArrayIndexOutOfBoundsException.class)
用例分組:
@Test(groups = {"group_one", "group_two"})
依賴測試:
@Test
public void testOne(){}
@Test(dependsOnMethods = "testOne")
public void testTwo(){}
多次執行以及使用線程池:
@Test(invocationCount = 5, threadPoolSize = 5)
用例執行5次,使用5個線程并行執行
套件測試
需要借助XML文件,運行時需要指定XML才能正確執行
//測試整個NewTest以及OldTest中的testThird方法 <suite name="Method Suit" verbose="1"> <test name="includedGroupsInAPackage"> <classes> <class name="com.me.hello.NewTest"/> <class name="com.me.hello.OldTest"> <methods> <include name="testThird"/> </methods> </class> </classes> </test> </suite> //測試指定兩個package里的所有測試類 <test name="tttt"> <packages> <package name="com.me.hello"/> <package name="com.me.chat"/> </packages> </test> //指定package中的分組測試,以及指定class測試。 <suite name="Group Suit" verbose="10"> <test name="tttt"> <groups> <run> <include name="slow"/>//分組測試 <include name="fast"/> </run> </groups> <packages> <!--<package name="com.me.good"/>--> <!--<package name="com.me.hello"/>--> <package name="com.me.*"/> </packages> </test> <test name="next test"> <classes> <class name="com.me.hello.NewTest"/>//指定類 </classes> </test> </suite> 備注: IDEA的套件測試需要在Run-Edit Configurations中配置運行條件以及指定xml文件,或者直接命令行執行。
參數化測試:
1、通過xml文件(基本數據類型)
2、代碼中使用@DataProvider(復雜數據類型)
@DataProvider(name = "getData") public Object[][] getDataFromFile(){ return new Object[][]{{1,2},{3,4},{5,6}}; } @Test(dataProvider = "getData") public void testCalc(int a, int e){ Assert.assertEquals(a+1, e); } 1、聲明一個方法給定名字,返回數組數據。 2、Test方法根據DataProvider方法返回的數據,設定參數列表。 3、按照參數列表順序操作參數。
斷言
TestNG的斷言總體和JUnit相似,大體上區別只是把提示消息位置放在后面而已。
總結:
相比JUnit,TestNG的參數化測試,依賴測試,分組測試都更方便使用。另外套件測試使用XML和代碼實現數據和測試邏輯的分離,并且方便定制分類邏輯更復雜的測試。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。