TestNG测试框架的使用总结

发表于:2018-12-05 13:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:一剑围城    来源:51CTO博客

#
TestNG
  TestNG是诞生于JUnit3和JUnit4之间的一个测试框架,虽然在JUnit4之前诞生,但被认为更先进,NG是Next Generation的意思。TestNG拥有诸多新特性,以及消除了JUnit中的许多限制,更适合于大型项目的测试。
  常用注解:
  注解使用示例:
   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文件,或者直接命令行执行。
  参数化测试:
  TestNG是诞生于JUnit3和JUnit4之间的一个测试框架,虽然在JUnit4之前诞生,但被认为更先进,NG是Next Generation的意思。TestNG拥有诸多新特性,以及消除了JUnit中的许多限制,更适合于大型项目的测试。
  常用注解:
  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和代码实现数据和测试逻辑的分离,并且方便定制分类逻辑更复杂的测试。

     上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号