TestNG使用总结
TestNG是诞生于JUnit3和JUnit4之间的一个测试框架,虽然在JUnit4之前诞生,但被认为更先进,NG是Next Generation的意思。TestNG拥有诸多新特性,以及消除了JUnit中的许多限制,更适合于大型项目的测试。
常用注解:
注解使用示例:
publicclassOrderTest{@BeforeSuitepublicvoidtestBeforeSuite(){System.out.println("BeforeSuite");}@AfterSuitepublicvoidtestAfterSuite(){System.out.println("AfterSuite");}@BeforeTestpublicvoidtestBeforeTest(){System.out.println("BeforeTest");}@AfterTestpublicvoidtestAfterTest(){System.out.println("AfterTest");}@BeforeClasspublicvoidtestBeforeClass(){System.out.println("BeforeClass");}@AfterClasspublicvoidtestAfterClass(){System.out.println("AfterClass");}@BeforeGroups(groups="data")publicvoidtestBeforeGroups(){System.out.println("BeforeGroups");}@AfterGroups(groups="data")publicvoidtestAfterGroups(){System.out.println("AfterGroups");}@BeforeMethodpublicvoidtestBeforeMethod(){System.out.println("BeforeMethod");}@AfterMethodpublicvoidtestAfterMethod(){System.out.println("AfterMethod");}@Test(groups="data")publicvoidtestGroup1(){System.out.println("1、Belongtogroupdata");}@Test(groups="data")publicvoidtestGroup2(){System.out.println("2、Belongtogroupdata");}}执行顺序:BeforeSuiteBeforeTestBeforeClassBeforeGroupsBeforeMethod1、BelongtogroupdataAfterMethodBeforeMethod2、BelongtogroupdataAfterMethodAfterGroupsAfterClassAfterTestAfterSuite备注:其中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方法<suitename="MethodSuit"verbose="1"><testname="includedGroupsInAPackage"><classes><classname="com.me.hello.NewTest"/><classname="com.me.hello.OldTest"><methods><includename="testThird"/></methods></class></classes></test></suite>//测试指定两个package里的所有测试类<testname="tttt"><packages><packagename="com.me.hello"/><packagename="com.me.chat"/></packages></test>//指定package中的分组测试,以及指定class测试。<suitename="GroupSuit"verbose="10"><testname="tttt"><groups><run><includename="slow"/>//分组测试<includename="fast"/></run></groups><packages><!--<packagename="com.me.good"/>--><!--<packagename="com.me.hello"/>--><packagename="com.me.*"/></packages></test><testname="nexttest"><classes><classname="com.me.hello.NewTest"/>//指定类</classes></test></suite>备注:IDEA的套件测试需要在Run-EditConfigurations中配置运行条件以及指定xml文件,或者直接命令行执行。
参数化测试:
1、通过xml文件(基本数据类型)
2、代码中使用@DataProvider(复杂数据类型)
@DataProvider(name="getData")publicObject[][]getDataFromFile(){returnnewObject[][]{{1,2},{3,4},{5,6}};}@Test(dataProvider="getData")publicvoidtestCalc(inta,inte){Assert.assertEquals(a+1,e);}1、声明一个方法给定名字,返回数组数据。2、Test方法根据DataProvider方法返回的数据,设定参数列表。3、按照参数列表顺序操作参数。
断言
TestNG的断言总体和JUnit相似,大体上区别只是把提示消息位置放在后面而已。
总结:
相比JUnit,TestNG的参数化测试,依赖测试,分组测试都更方便使用。另外套件测试使用XML和代码实现数据和测试逻辑的分离,并且方便定制分类逻辑更复杂的测试。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。