TestNG 开源自动化测试框架

发表于:2018-8-08 14:57

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

 作者:timen_xu    来源:CSDN

  摘要:
  TestNG是一个开源自动化测试框架;TestNG表示下一代。 TestNG是类似于JUnit(特别是JUnit 4),但它不是一个JUnit扩展。它的灵感来源于JUnit。它的目的是优于JUnit的,尤其是当测试集成的类。
  主要内容:
  TestNG编写测试:
  编写TestNG测试基本上包括以下步骤:
  测试和编写业务逻辑,在代码中插入TestNG的注解..
  添加一个testng.xml文件或build.xml中在测试信息(例如类名,您想要运行的组,等..)
  运行 TestNG.
  TestNG基本注解(注释):
  @BeforeSuite 注解的方法将只运行一次,运行所有测试前此套件中。
  @AfterSuite 注解的方法将只运行一次此套件中的所有测试都运行之后。
  @BeforeClass 注解的方法将只运行一次先行先试在当前类中的方法调用。
  @AfterClass 注解的方法将只运行一次后已经运行在当前类中的所有测试方法。
  @BeforeTest 注解的方法将被运行之前的任何测试方法属于内部类的 标签的运行。
  @AfterTest 注解的方法将被运行后,所有的测试方法,属于内部类的标签的运行。
  @BeforeGroups 组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。
  @AfterGroups 组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。
  @BeforeMethod 注解的方法将每个测试方法之前运行。
  @AfterMethod 被注释的方法将被运行后,每个测试方法。
  @DataProvider 标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。
  @Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
  @Factory 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
  @Listeners 定义一个测试类的监听器。
  @Parameters 介绍如何将参数传递给@Test方法。
  @Test 标记一个类或方法作为测试的一部分。
  TestNG执行程序:
  例子:
  import org.testng.annotations.Test;
  import org.testng.annotations.BeforeMethod;
  import org.testng.annotations.AfterMethod;
  import org.testng.annotations.BeforeClass;
  import org.testng.annotations.AfterClass;
  import org.testng.annotations.BeforeTest;
  import org.testng.annotations.AfterTest;
  import org.testng.annotations.BeforeSuite;
  import org.testng.annotations.AfterSuite;
  public class TestngAnnotation {
  // test case 1
  @Test
  public void testCase1() {
  System.out.println("in test case 1");
  }
  // test case 2
  @Test
  public void testCase2() {
  System.out.println("in test case 2");
  }
  @BeforeMethod
  public void beforeMethod() {
  System.out.println("in beforeMethod");
  }
  @AfterMethod
  public void afterMethod() {
  System.out.println("in afterMethod");
  }
  @BeforeClass
  public void beforeClass() {
  System.out.println("in beforeClass");
  }
  @AfterClass
  public void afterClass() {
  System.out.println("in afterClass");
  }
  @BeforeTest
  public void beforeTest() {
  System.out.println("in beforeTest");
  }
  @AfterTest
  public void afterTest() {
  System.out.println("in afterTest");
  }
  @BeforeSuite
  public void beforeSuite() {
  System.out.println("in beforeSuite");
  }
  @AfterSuite
  public void afterSuite() {
  System.out.println("in afterSuite");
  }
  }
  XML文件:
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
  <suite name="Suite1">
  <test name="test1">
  <classes>
  <class name="TestngAnnotation"/>
  </classes>
  </test>
  </suite>
  运行结果:
  in beforeSuite
  in beforeTest
  in beforeClass
  in beforeMethod
  in test case 1
  in afterMethod
  in beforeMethod
  in test case 2
  in afterMethod
  in afterClass
  in afterTest
  in afterSuite
  ===============================================
  Suite
  Total tests run: 2, Failures: 0, Skips: 0
  ===============================================

  以下内容下篇文章再进行详细讲解:
  TestNG执行测试
  TestNG套件测试
  TestNG忽略测试
  TestNG组测试
  TestNG异常测试
  TestNG依赖测试
  TestNG参数化测试
  TestNG运行JUnit测试
  TestNG测试结果报告
  TestNG插件与ANT
  TestNG Eclipse插件
  总结:
  TestNG消除了大部分的旧框架的限制,使开发人员能够编写更加灵活和强大的测试。 因为它在很大程度上借鉴了Java注解(JDK5.0引入的)来定义的测试,它也可以告诉你如何使用这个新功能在真实的Java语言生产环境中。

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号