• TestNG 四 测试方法之工厂


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

    [java] view plain copy
     
    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:

    [html] view plain copy
     
    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>  

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

    [java] view plain copy
     
    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. }  

    新的测试类如下:

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

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

    <class name="WebTestFactory"/>

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

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

     
     
  • 相关阅读:
    1.NopCommerce下载与安装
    DLT(Direct Linear Transform)算法
    向量叉乘与叉乘矩阵
    最小二乘与最大似然估计之间的关系
    最小二乘法
    Levenberg-Marquardt迭代(LM算法)-改进Guass-Newton法
    Newton法(牛顿法 Newton Method)
    自己所有博客汇总
    Unity 预制体烘焙光影丢失,Unity2018 预制嵌套
    XmlException: Text node canot appear in this state
  • 原文地址:https://www.cnblogs.com/ceshi2016/p/6439919.html
Copyright © 2020-2023  润新知