您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > TestNG
TestNG参数化测试
作者:网络转载 发布时间:[ 2016/1/20 13:28:23 ] 推荐标签:单元测试工具 软件测试

  传递参数与数据提供者
  当你需要通过复杂的参数或参数需要创建从Java(复杂的对象,对象读取属性文件或数据库等..),在这种情况下,可以将参数传递使用数据提供者。数据提供者@DataProvider的批注的方法。这个注解只有一个字符串属性:它的名字。如果不提供名称,数据提供者的名称会自动默认方法的名称。数据提供者返回一个对象数组。
  让我们看看下面的例子使用数据提供者。第一个例子是@DataProvider的使用Vector,String或Integer 作为参数,第二个例子是关于@DataProvider 的使用对象作为参数。
  实例 1
  在这里 @DataProvider 通过整数和布尔参数。
  创建Java类
  创建一个java类PrimeNumberChecker.java。这个类检查,如果是素数。创建这个类在 C: > TestNG_WORKSPACE
  public class PrimeNumberChecker {
  public Boolean validate(final Integer primeNumber) {
  for (int i = 2; i < (primeNumber / 2); i++) {
  if (primeNumber % i == 0) {
  return false;
  }
  }
  return true;
  }
  }
  创建测试案例类
  创建一个Java测试类 ParamTestWithDataProvider1.java.
  定义方法primeNumbers(),其定义为DataProvider 使用注释。此方法返回的对象数组的数组。
  测试方法testPrimeNumberChecker()添加到测试类中。此方法需要一个整数和布尔值作为输入参数。这个方法验证,如果传递的参数是一个素数。
  添加注释 @Test(dataProvider = "test1") 到此方法。dataProvider的属性被映射到"test1".
  创建Java类文件名ParamTestWithDataProvider1.java 在 C: > TestNG_WORKSPACE
  import org.testng.Assert;
  import org.testng.annotations.BeforeMethod;
  import org.testng.annotations.DataProvider;
  import org.testng.annotations.Test;
  public class ParamTestWithDataProvider1 {
  private PrimeNumberChecker primeNumberChecker;
  @BeforeMethod
  public void initialize() {
  primeNumberChecker = new PrimeNumberChecker();
  }
  @DataProvider(name = "test1")
  public static Object[][] primeNumbers() {
  return new Object[][] { { 2, true }, { 6, false }, { 19, true },
  { 22, false }, { 23, true } };
  }
  // This test will run 4 times since we have 5 parameters defined
  @Test(dataProvider = "test1")
  public void testPrimeNumberChecker(Integer inputNumber,
  Boolean expectedResult) {
  System.out.println(inputNumber + " " + expectedResult);
  Assert.assertEquals(expectedResult,
  primeNumberChecker.validate(inputNumber));
  }
  }
  创建 TESTNG.XML
  创建 testng.xml C: > TestNG_WORKSPACE 执行测试案例。
  <?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="ParamTestWithDataProvider1" />
  </classes>
  </test>
  </suite>
  编译使用javac的测试用例类。
  C:TestNG_WORKSPACE>.javac ParamTestWithDataProvider1.java PrimeNumberChecker.java
  运行testng.xml.
  C:TestNG_WORKSPACE>java -cp "C:TestNG_WORKSPACE" org.testng.TestNG testng.xml
  验证输出。
  2 true
  6 false
  19 true
  22 false
  23 true
  ===============================================
  Suite1
  Total tests run: 5, Failures: 0, Skips: 0
  ===============================================
  实例 2
  在这里,@DataProvider 传递对象作为参数。
  创建Java类
  创建一个Java类 Bean.java, 对象带有 get/set 方法, 在 C: > TestNG_WORKSPACE.
  public class Bean {
  private String val;
  private int i;
  public Bean(String val, int i){
  this.val=val;
  this.i=i;
  }
  public String getVal() {
  return val;
  }
  public void setVal(String val) {
  this.val = val;
  }
  public int getI() {
  return i;
  }
  public void setI(int i) {
  this.i = i;
  }
  }
  创建测试案例类
  创建一个Java测试类 ParamTestWithDataProvider2.java.
  定义方法primeNumbers(),其定义为DataProvider使用注释。此方法返回的对象数组的数组。
  添加测试类中测试方法TestMethod()。此方法需要对象的bean作为参数。
  添加注释 @Test(dataProvider = "test1") 到此方法. dataProvider 属性被映射到 "test1".
  创建Java类文件名 ParamTestWithDataProvider2.java 在 C: > TestNG_WORKSPACE
  import org.testng.annotations.DataProvider;
  import org.testng.annotations.Test;
  public class ParamTestWithDataProvider2 {
  @DataProvider(name = "test1")
  public static Object[][] primeNumbers() {
  return new Object[][] { { new Bean("hi I am the bean", 111) } };
  }
  @Test(dataProvider = "test1")
  public void testMethod(Bean myBean) {
  System.out.println(myBean.getVal() + " " + myBean.getI());
  }
  }
  创建 TESTNG.XML
  创建一个文件 testng.xml C: > TestNG_WORKSPACE 来执行测试用例.
  <?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="ParamTestWithDataProvider2" />
  </classes>
  </test>
  </suite>
  编译使用javac的测试用例类。
  C:TestNG_WORKSPACE>javac ParamTestWithDataProvider2.java Bean.java
  运行 testng.xml.
  C:TestNG_WORKSPACE>java -cp "C:TestNG_WORKSPACE" org.testng.TestNG testng.xml
  验证输出。
  hi I am the bean 111
  ===============================================
  Suite1
  Total tests run: 1, Failures: 0, Skips: 0
  ===============================================

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd