TestNG--@Factory
原文地址:http://blog.csdn.net/wanghantong
TestNg的@Factory注解从字面意思上来讲就是采用工厂的方法来创建测试数据并配合完成测试
其主要应对的场景是:对于某一个测试用例或方法,我们需要输入多个测试数据进行测试,并且这些测试数据可以是有一定关系(可以通过代码控制),
ps. 其实就是用一个类封装这些测试数据。在默认情况下,testNG调用测试类的无参数构造方法,将测试类实例化,然后执行在每个测试类中的测试方法,如果测试类没有无参数的构造方法,就会报错。使用@Factory可以实现调用有参数的构造函数来创建实例对象。
此时,我们就可以把自动化或者手动测试时的遇到的只因测试数据不同的多个测试用例合并成一个测试用例,来进行更方便和快捷的测试,
对编写自动化测试代码人员节省了很多时间
策略:一般我们会在标有@Factory注解的方法中对测试类进行调用,这时TestNg会自动调用测试类中带有@Test注解的方法
java code:
/**
*
* <p>
* Title: TestngFactory
* </p>
*
* <p>
* Description: 配置文件:testng-factory.xml
*
* TestngFactory工厂类,在带有@Factory注解的方法中调用被执行的测试类,TestNg会自动调用被执行类中带有@Test注解的方法,
* 被执行的测试类为:TestngFactoryTest,
* </p>
*
* <p>
* Company:
* </p>
*
* @author : Dragon
*
* @date : 2014年10月22日
*/
public class TestngFactory {
@Factory
public Object[] createInstances() {
Object[] result = new Object[10];
for (int i = 0; i < 10; i++) {
result[i] = new TestngFactoryTest(i * 10);
}
return result;
}
}
public class TestngFactoryTest {
private int m_numberOfTimes;
public TestngFactoryTest(int numberOfTimes) {
this.m_numberOfTimes = numberOfTimes;
}
private static int num;
@Test
public void testServer() {
num++;
System.out.println("num " + num + " m_numberOfTimes :"
+ m_numberOfTimes);
}
}
配置文件:只需要配置带有@Factory注解的类即可
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!-- allow-return-values 默认值为FALSE,表示返回值将被忽略 -->
<suite name="framework_testng" allow-return-values="true">
<test verbose="2" name="TestMethods">
<classes>
<class name="com.dragon.testng.annotation.TestngFactory">
</class>
</classes>
</test>
</suite>
测试结果:
num 1 m_numberOfTimes :30
num 2 m_numberOfTimes :20
num 3 m_numberOfTimes :70
num 4 m_numberOfTimes :60
num 5 m_numberOfTimes :90
num 6 m_numberOfTimes :50
num 7 m_numberOfTimes :10
num 8 m_numberOfTimes :0
num 9 m_numberOfTimes :40
num 10 m_numberOfTimes :80
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer ===============================================
TestMethods
Tests run: 10, Failures: 0, Skips: 0
===============================================
TestNG--@Factory的更多相关文章
- TestNG @Factory与 @DataProvider 结合使用进行参数化测试
简介 TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试到集成测试,这个是TestNG设计的出发点,不仅仅是单元测试,而且可以用于集成测试.设计目标的不同,对比junit的只适合用于单 ...
- TestNG BeforeClass BeforeMethod Test AfterClass AfterMethod
http://topmanopensource.iteye.com/blog/1983729 1.TestNG测试注解和Junit注解的不同以及生命周期: TestNG测试的一个方法的生命周期: @B ...
- TestNG超详细教程
testNG官网:http://testng.org/doc/download.html howtodoinjava.com里的testNG教程,简单详细:http://howtodoinjava.c ...
- HowToDoInJava 其它教程 1 · 翻译完成
原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 Maven 教程 如何在 ...
- TestNG之Factory
如果我们的测试方法中,同一个变量需要很多个不同的测试数据,那么这些测试数据由谁提供呢,testng提供了factory的注解,下面我们来一探究竟. 一.单独使用Factory 1.新建一个含有@Fac ...
- testNG中@Factory详解
@Factory注解从字面意思上来讲就是采用工厂的方法来创建测试数据并配合完成测试,其主要应对的场景是:对于某一个测试用例或方法,我们需要输入多个测试数据进行测试,并且这些测试数据可以是有一定关系(可 ...
- TestNg它@Factory详细解释------如何更改参数值测试
原创文章,版权所有所有.转载,归因:http://blog.csdn.net/wanghantong TestNg的@Factory注解从字面意思上来讲就是採用工厂的方法来创建測试数据并配合完毕測试 ...
- testng学习-before&after,parameters,并行,factory,beanshell,监听器,依赖注入
一系列的before after的操作测试 [TestNG] Running: C:\Users\user\AppData\Local\Temp\testng-eclipse-1538841744\t ...
- testng的@Factory及其与@DataProvider的区别
Factory,顾名思意就是工厂,也就是工厂方法,在软件开发中一般结合多态使用,用来根据不同的条件创建不同的类对象. 在这里,Factory一般用来创建一个测试类的多个实例,每个实例属性不同,以执行不 ...
- TestNG注解使用技巧 - @Factory
之前在测试中一直使用testNG的@Test注解都很顺利没有碰到什么问题,今天突然遇到@Test不能用的情况,运行后提示: org.testng.TestNGException: Can't invo ...
随机推荐
- What's new in Dubbo-go v1.5.1
近期我们发布了 dubbo-go v1.5.1,虽然是 v1.5 的一个子版本,但相比于 v1.5.0, 社区还是投入了很大人力添加了如下重大改进. 1 应用维度注册模型 在新模型 release 后 ...
- JDK_win10环境下安装JDK8时点击下一步没反应的解决办法
问题现象 打开JDK8,点击下一步就没后续了... 解决方法 百度了一下"win10安装jdk8点下一步无响应" . 按照博客中说的操作试了下...安装成功了... 只想说...什 ...
- Pytest_测试用例的执行方式(2)
在pytest框架中,编写测试用例有如下约束: 所有的测试用例文件名都需要满足test_*.py格式或*_test.py格式. 在测试用例文件中,测试类以Test开头,并且不能带有__init__方法 ...
- centos7安装wordpress详细教程
安装之前:建议安装各种软件 [root@localhost ~]# yum -y install wget zip unzip net-tools 一.安装apache 测试环境建议关闭防火墙和SEL ...
- BrowserSync 本地服务器的起用
最简单粗暴的方法:进入项目根目录,执行命令browser-sync start --server --files "**" 监听所有
- Calendar日期往后一天,一月等
import java.util.Date ; Date date=new Date();//取时间 System.out.println(date.toString()); ...
- less 循环模拟sass的for循环效果
// 输入框部分宽度 从10px到600px 相隔10像素 .generate-widths(600); .generate-widths(@n, @i: 10) when (@i =< @n) ...
- Flowable实战(二)集成Springboot
1.创建Springboot项目 打开IDEA,通过File -> New -> Project- -> Spring Initializr 创建一个新的Springboot项目 ...
- Numpy实现简单BP神经网络识别手写数字
本文将用Numpy实现简单BP神经网络完成对手写数字图片的识别,数据集为42000张带标签的28x28像素手写数字图像.在计算机完成对手写数字图片的识别过程中,代表图片的28x28=764个像素的特征 ...
- 【Java】多态性
文章目录 多态性 向下转型 多态性 可以理解为一个事物的多种形态. 对象的多态性:父类的引用指向子类的对象.只适用于方法,不适用于属性(编译和运行都看左边) 总结:对于对象的多态性,编译,看左边:运行 ...