工厂允许你动态的创建测试。例如,假设你需要创建一个测试方法,并用它来多次访问一个web页面,而且每次都带有不同的参数:

  1. public class TestWebServer {
  2. @Test(parameters = { "number-of-times" })
  3. public void accessPage(int numberOfTimes) {
  4. while (numberOfTimes-- > 0) {
  5. // access the web page
  6. }
  7. }
  8. }

testng.xml:

  1. <test name="T1">
  2. <parameter name="number-of-times" value="10"/>
  3. <class name= "TestWebServer" />
  4. </test>
  5. <test name="T2">
  6. <parameter name="number-of-times" value="20"/>
  7. <class name= "TestWebServer"/>
  8. </test>
  9. <test name="T3">
  10. <parameter name="number-of-times" value="30"/>
  11. <class name= "TestWebServer"/>
  12. </test>

参数一旦多起来,就难以管理了,所以应该使用工厂来做:

  1. public class WebTestFactory {
  2. @Factory
  3. public Object[] createInstances() {
  4. Object[] result = new Object[10];
  5. for (int i = 0; i < 10; i++) {
  6. result[i] = new WebTest(i * 10);
  7. return result;
  8. }
  9. }

新的测试类如下:

  1. public class WebTest {
  2. private int m_numberOfTimes;
  3. public WebTest(int numberOfTimes) {
  4. m_numberOfTimes = numberOfTimes;
  5. }
  6. @Test
  7. public void testServer() {
  8. for (int i = 0; i < m_numberOfTimes; i++) {
  9. // access the web page
  10. }
  11. }
  12. }

你的testng.xml 只需要引用包含工厂方法的类,而测试实例自己会在运行时创建:

<class name="WebTestFactory"/>

工厂方法可以接受诸如 @Test 和 @Before/After 所标记的参数,并且会返回 Object[]。这些返回的对象可以是任何类(不一定是跟工厂方法相同的类),并且他们甚至都不需要TestNG注解(在例子中会被TestNG忽略掉)

本文转载自:http://blog.sina.com.cn/bestfeiyong

 
 

TestNG 四 测试方法之工厂的更多相关文章

  1. 设计模式(四)抽象工厂模式(Abstract Factory Pattern)

    一.引言 在上一专题中介绍了工厂方法模式,工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码,而工厂方法模式每个具体工厂类只完成单个实例的创建 ...

  2. TestNG 三 测试方法

    一.设置参数 测试方法是可以带有参数的.每个测试方法都可以带有任意数量的参数,并且可以通过使用TestNG的@Parameters向方法传递正确的参数. 设置方式有两种方法:使用testng.xml或 ...

  3. 设计模式学习(四): 1.简单工厂 (附C#实现)

    New 这是一个典型的情况, 我们需要在运行时来实例化一些具体的类. 在需要修改或者扩展的时候我们就需要改这段代码. 一个程序中可能会多次出现类似的代码, 这使得维护和更新非常困难而且容易出错. 通过 ...

  4. Unity C# 设计模式(四)抽象工厂模式

    定义: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 工厂方法模式针对的是一个产品等级结构:而抽象工厂模式针对的是多个产品等级结构. 抽象工厂模式使用同一个 工厂等级结构负责这 ...

  5. 四 Spring的工厂类,xml的配置

    Spring工厂类的结构图: BeanFactory:老版本的工厂类 BeanFactory:调用getBean的时候,才会生产类的实例 ApplicationFactory:新版本的工厂类 加载配置 ...

  6. 大型Java进阶专题(四) 设计模式之工厂模式

    前言 ​ 今天开始我们专题的第三课了,开始对设计模式进行讲解,本章节介绍:了解设计模式的由来,介绍设计模式能帮我们解决那些问题以及剖析工厂模式的历史由来及应用场景.本章节参考资料书籍<Sprin ...

  7. Java自动化测试框架-07 - TestNG之Factory篇 - 欢快畅游梦幻工厂(详细教程)

    简介 最近忙着装修博客园,没时间更新文章,今天终于抽出时间把上次写的一半的文章给写完了,新的博客园风格,希望大家喜欢.今天继续介绍testng的相关知识--工厂. 工厂允许你动态的创建测试.例如,假设 ...

  8. TestNG系列(四)TestNG监听器

    前言 监听器实际上是一些预定义的java接口,用户创建这些接口的实现类(即implements某监听接口,并实现里面的方法),并加入到testng中,testng便会在运行的不同时刻调用这些类中你自定 ...

  9. TestNG深入理解

    以下内容引自: http://blog.csdn.net/wanglha/article/details/42004695 TestNG深入理解 转载 2014年12月18日 13:56:11 参考文 ...

随机推荐

  1. 干净地发布QT程序

    原文请看:http://www.cnblogs.com/DrizzleX/articles/2475044.html 本文研究这样一个问题:使用QT SDK和VS2008开发了一个程序,将这个程序放到 ...

  2. 初探python编码

    背景:在实际数据处理中,我们或多或少会接触到中文,如两个dc pack包的diff.使用python对中文数据 处理难免会遇到编码问题. python里面主要考虑三种编码: 1.源文件编码: 如果我们 ...

  3. Nginx开启跨域访问

    CORS on Nginx The following Nginx configuration enables CORS, with support for preflight requests. # ...

  4. D - Matrix Multiplication ZOJ - 2316 规律题

    Let us consider undirected graph G = which has N vertices and M edges. Incidence matrix of this grap ...

  5. 【BZOJ 1119】 1119: [POI2009]SLO (置换)

    1119: [POI2009]SLO Description 对于一个1-N的排列(ai),每次你可以交换两个数ax与ay(x<>y),代价为W(ax)+W(ay) 若干次交换的代价为每次 ...

  6. Line Reflection -- LeetCode

    Given n points on a 2D plane, find if there is such a line parallel to y-axis that reflect the given ...

  7. JZYZOJ1544 [haoi2016T2]放棋子 错排公式 组合数学 高精度

    http://172.20.6.3/Problem_Show.asp?ID=1544&a=ProbNF 看了题解才意识到原题有错排的性质(开始根本不知道错排是什么). 十本不同的书放在书架上. ...

  8. java之判断输入的数是否为素数

    import java.util.Scanner; public class TestIsSushu { public static void main(String[] args) { Scanne ...

  9. Problem C: 指针:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数

    #include<stdio.h> int move(int *x,int n,int m) { ]; int i; //int *p;指针循环变量p ;i<n;i++) t[i]= ...

  10. spring boot 添加自定义属性

    1.添加jar compile('org.springframework.boot:spring-boot-configuration-processor:1.2.0.RELEASE') 2.在app ...