TestNg的工厂测试引用@DataProvider数据源----灵活使用工厂测试

之前说过@Factory更适合于同一类型的参数变化性的测试,那么如果参数值没有特定的规律时,我们可以采用@Factory和@DataProvider相结合的方式进行测试

注意要点:请注意测试方法将被一共执行的次数,因为@Factory本身就属于循环测试的类型,@DataProvider也是属于测试整体循环的类型

Java code:

/**
 *
 * <p>
 * Title: TestngFactoryDataProvider
 * </p>
 *
 * <p>
 * 配置文件:testng-factoryDataProvider.xml
 *
 * Description:
 * 使用@DataProvider作为数据注入的方式,向Factory中注入数据,并执行测试,被执行的测试类:TestngFactoryTest
 * </p>
 *
 * <p>
 * Company:
 * </p>
 *
 * @author : Dragon
 *
 * @date : 2014年10月22日
 */
public class TestngFactoryDataProvider {
	@Factory(dataProvider = "datasource")
	public Object[] createInstances(int a) {
		System.out.println(a);
		Object[] result = new Object[a];
		for (int i = 0; i < a; i++) {
			result[i] = new TestngFactoryTest(i * 10);
		}
		return result;
	}

	@DataProvider(name = "datasource")
	public Object[][] getDatasource() {
		return new Object[][] { new Object[] { 2 }, new Object[] { 4 } };
	}
}
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);
	}
}

配置文件:

<?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.TestngFactoryDataProvider">
			</class>
		</classes>
	</test>
</suite>

测试结果:

num    1  m_numberOfTimes :20
num    2  m_numberOfTimes :10
num    3  m_numberOfTimes :0
num    4  m_numberOfTimes :30
num    5  m_numberOfTimes :10
num    6  m_numberOfTimes :0
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer
PASSED: testServer

===============================================
    TestMethods
    Tests run: 6, Failures: 0, Skips: 0
===============================================

如果我厚道,

别认为我笨拙。因为我明白,

厚德能载物,助人能快乐。

时间: 2024-10-12 15:24:02

TestNg的工厂测试引用@DataProvider数据源----灵活使用工厂测试的相关文章

TestNg的工厂測试引用@DataProvider数据源----灵活使用工厂測试

之前说过@Factory更适合于同一类型的參数变化性的測试,那么假设參数值没有特定的规律时,我们能够採用@Factory和@DataProvider相结合的方式进行測试 注意要点:请注意測试方法将被一共运行的次数.由于@Factory本身就属于循环測试的类型.@DataProvider也是属于測试总体循环的类型 Java code: /** * * <p> * Title: TestngFactoryDataProvider * </p> * * <p> * 配置文件:

spring+springMVC+Mybatis架构下采用AbstractRoutingDataSource、atomikos、JTA实现多数据源灵活切换以及分布式事务管理

背景: 1.系统采用SSM架构.需要在10多个MYSQL数据库之间进行切换并对数据进行操作,上篇博文<springMVC+Mybatis(使用AbstractRoutingDataSource实现多数据源切换时)事务管理未生效的解决办法> 2.第一步先通过AbstractRoutingDataSource实现了多数据源的灵活切换,但是后来发现事务不起作用: 3.发现问题是因为重复扫描service包导致第二次扫入容器的BEAN没有纳入事务管理,因此在springMVC的配置文件中排除了对Ser

应用抽象工厂+反射实现通用数据源的设计(二)

上篇博文到学生表的一个接口由SqlServerDal和AccessDal层实现具体的方法. 下面定义一个生产抽象产品工厂的接口: 五:定义MySchoolIFactory下IStudentFactory的工厂(引用IStudens接口): public interface IStudentFactory { //产生学生接口的抽象工厂接口 IStudent CreateStudent(); } 六:有两个具体的工厂:SQLServerFactory和AccessFactory(引用MySchoo

润乾报表 数据集ds1中,数据源xmglxt_x3无数据库连接,且未设定数据连接工厂,请检查数据源设定:

一.润乾报表错误内容 产生数据工厂: com.runqian.report4.dataset.SQLDataSetFactory 失败 错误来源:: 数据集ds1中,数据源xmglxt_x3无数据库连接,且未设定数据连接工厂,请检查数据源设定: 二.解决方法 同事做的润乾报表.我来整合到系统中,在调试运行的时候都是用的同一个数据库,数据库链接也是开启的,但是就是连不上. 这个时候需要在配置菜单->数据集,如下图 重新选择一下数据源,然后保存,问题得到解决. 估计是因为用的不同的环境的,所以js中

引用文档-软件测试分类及测试中三个主要概念

软件测试分类及测试中三个主要概念 原文链接:https://blog.csdn.net/qq_35867537/article/details/77477775 1.      软件测试分类 按测试技术分 按测试技术,软件测试可分为:黑盒测试.白盒测试.灰盒测试 黑盒测试:在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用.也被称为功能测试或者数据驱动测试. 白盒测试:要完全了解程序结构和处理过程,它按照程序内部逻辑测试程序,检验程序中每条通路是否按预定要求正确工作.也被称为

开发者测试-采用精准测试工具对Spring Boot应用进行测试

简介:本文主要介绍把现今主流的springboot框架项目和精准测试工具进行结合和应用,通过精准测试的数据穿透.数据采集.测试用例与代码的双向追溯.数据分析等一系列精准测试的特有功能,达到对项目质量的保证. 本次环境搭建分为基础环境准备.springboot环境搭建.精准测试环境搭建.精准测试与springboot环境对接等一整套完整的配置过程,用户可以通过下图中的流程图确认自己所部署过程中进行到的阶段点,从而排查部署中可能遇见的问题. 一,Spring Boot配置流程 1,使用工具 1, E

简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别

结合简单示例和UML图,讲解工厂模式简单原理. 一.引子 话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰).Bmw(宝马).Audi(奥迪)),还雇了司机为他开车.不过,爆发户坐车时总是这样:上Benz车后跟司机说"开奔驰车!",坐上Bmw后他说"开宝马车!",坐上 Audi后他说"开奥迪车!".你一定说:这人有病!直接说开车不就行了?!而当把这个爆发户的行为放到我们程序语言中来,我们发现C语言一直是通过这种方式来坐车的!幸运的是这种有

东莞无人工厂变成现实,中国无人工厂将很快普及,保住世界工厂地位

无人工厂概念提出没多久,现在已经被很多人努力把它转变成现实.相对机器人,机器换人,自动化生产,这些说法,无人工厂更加容易被人们接受和受到激励. 无人工厂就是淘汰生产线上的工人,不再需要工人,只要维护无人工厂的工人. 无人工厂一旦开发和建设成功,生产率会大幅上升,产业工人从繁重工作中解脱出来,继续使用工人的工厂将很快被淘汰.当然小的手工作坊可能还会存在,但是成不了气候. 无人工厂对于东莞来说是获得第二次生命,否则东莞会变成类似矿山城市那样一哄而散. 无人工厂技术向第一产业发展可能出现无人生产,向第

测试员:你知道未来移动测试的方向是什么样的吗?

此前一篇文章提到,设备的碎片化为移动应用的测试带来了极大挑战.有挑战就有机会,不仅仅是TestBird,包括BAT在内的互联网巨头们都在布局移动测试业务.但是,单一的测试服务是不能完全满足开发者需求的.因此我们一直在开始思考,什么样的测试模式才是未来移动测试的方向. 自动化测试是否能完全解决人们的需求呢? 我想不是的,虽然移动设备严重的碎片化,使得开发者不可能手动测试所有的设备和系统版本,但是,关于应用的使用体验和功能覆盖的测试依然需要人工.自动化测试的价值是避免了测试者重复劳动,而不是在于取代