- 浏览: 581754 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (188)
- java (14)
- web (14)
- web service (3)
- 杂谈 (14)
- Version Control (13)
- software test (30)
- linux (17)
- database (3)
- distributed storage and computing (1)
- ejb (7)
- project building (46)
- spring & IOC (2)
- Thread (2)
- xml (2)
- tool software (0)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
- project manager (9)
- OSGI (1)
- nosql (3)
最新评论
-
sp42:
好搞笑
你懂不懂xml! (2) -
cherishmmo2004:
感觉你们都很牛掰,我们做的一个运维平台也是用karaf的,用k ...
基于osgi开发大型的企业应用 -
liubey:
“自作聪明”的使用了读写锁,其实只使用ReentrantLoc ...
编码最佳实践(4)--小心LinkedHashMap的get()方法 -
liubey:
你这个代码是sublist后仍然一直持有这个sub的引用,一般 ...
编码最佳实践(5)--小心!这只是冰山一角 -
xiegqooo:
初学maven(5)-使用assembly plugin实现自定义打包
5.5 - Parameters
测试方法不要求是无参数的。你可以在每个测试方法上使用任意数量的参数,并指示testNG传递正确的参数。
有两种方式用于设置参数:使用testng.xml或者编程式。
5.5.1 - Parameters from testng.xml
如果你要为你的参数使用简单值,你可以在你的testng.xml中明确指定:
@Test
public void testSingleString(String firstName) {
System.out.println( " Invoked testString " + firstName);
assert " Cedric " .equals(firstName);
}
在这个代码中,我们明确指定java方法的参数“firstName”应该接收名为“first-name”xml参数的值。 这个xml参数在testng.xml中定义:
< suite name ="My suite" >
< parameter name ="first-name" value ="Cedric" />
< test name ="Simple example" >
< -- -- >
同样的方法可以用于注解@Before/After和@Factory:
@BeforeMethod
public void beforeTest(String ds, String driver) {
m_dataSource = ; // look up the value of datasource
m_jdbcDriver = driver;
}
这次,两个java参数ds和driver将分别接收被设置给属性datasource和jdbc-driver的值。
参数可以通过可选注解来声明为可选:
@Test
public void testNonExistentParameter(@Optional( " mysql " ) String db) { }
如果在testng.xml文件中没有找到名为"db"的参数,测试方法将接受在@Optional注解中指定的默认值:"mysql"
@Parameters 注解可以在下面位置使用:
* 在任何有@Test, @Before/After或者@Factory注解的方法上
* 在测试类的最多一个构造函数上。这种情况下,当TestNG需要实例化测试类时,他将调用这个特别的带有初始化为testng.xml中指定的值的参数的构造函数。这个特性可以被用于初始化类内部的值域为将用于测试方法的值。
注意:
* xml参数被以在注解中出现的相同顺序映射到java参数,如果参数数量不匹配testNG将发生错误。
* 参数是有范围的。在testng.xml中,你可以在<suite>标签或者<test>标签下声明参数。如果两个参数同名,在<test>标签下定义的参数优先。非常适用于这样的场合:需要指定一个应用于所有测试的参数,但是又希望在特定测试用覆盖它的值。
5.5.2 - Parameters with DataProviders
在testng.xml中指定参数,对于以下情况是不够的:
* 不使用testng.xml
* 需要传递复杂参数,或者参数需要从java中创建(复杂对象,从属性文件或者数据库中读取的对象)在这种情况下,你可以使用Data Provider来提供你测试需要的数值。Data Provider是类中的一个返回对象数组的数组的方法。这个方法带有@DataProvider注解:
@DataProvider(name = " test1 " )
public Object[][] createData1() {
return new Object[][] {
{ " Cedric " , new Integer( 36 ) },
{ " Anne " , new Integer( 37 )},
};
}
// 这个方法声明它的数据将由名为"test1"的Data Provider提供
@Test(dataProvider = " test1 " )
public void verifyData1(String n1, Integer n2) {
System.out.println(n1 + " " + n2);
}
将打印
Cedric 36
Anne 37
@Test方法用dataProvider属性来指定它的Data Provider。这个名字必须符合同一个类中用@DataProvider(name="...")注解的方法,它们要使用同一个匹配的名字。
默认,将在当前类或者它的基类中查找data provider。如果你想将data provider放置到另一个类中,需要将这个data provider方法设置为静态方法,并在dataProviderClass属性中指定在哪个类中可以找到这个方法。
@DataProvider(name = " create " )
public static Object[][] createData() {
return new Object[][] {
new Object[] { new Integer( 42 ) }
}
}
}
public class MyTest {
@Test(dataProvider = " create " , dataProviderClass = StaticProvider. class )
public void test(Integer n) {
//
}
}
Data Provider方法将返回下面两个类型中的一种:
The Data Provider method can return one of the following two types:
* 对象数组的数组(Object[][]) ,外围数据的大小是测试方法将被调用的次数,而内层数组的大小和类型必须和测试方法的参数列表匹配。如同上面举例说明的。
* <Object[]>的Iterator,和Object[][]的唯一差别在于Iterator容许延迟创建测试数据。testNG将一个接一个的调用iterator,再用iterator返回的参数调用测试方法。如果有很多参数集合需要传递给方法而又不想一开始就创建所有参数,会非常有用。
Here is an example of this feature for both JDK 1.4 and JDK5 (note that the JDK 1.4 example does not use Generics):
这里有一个同时适用于JDK 1.4和JDK5的例子(注意JDK 1.4的例子不使用注解):
* @testng.data-provider name="test1"
*/
public Iterator createData() {
return new MyIterator(DATA);
)
@DataProvider(name = " test1 " )
public Iterator createData() {
return new MyIterator(DATA);
}
如果将测试方法的第一个参数申明为java.lang.reflect.Method,TestNG将使用这个第一个参数来传递当前测试方法。当多个测试方法使用同一个@DataProvider而需要依当前申请数据的方法而定来返回不同值时特别有用。
举例说明,下面的代码在@DataProvider中打印测试方法的名字:
public Object[][] createData(Method m) {
System.out.println(m.getName()); // print test method name
return new Object[][] { new Object[] { " Cedric " }};
}
@Test(dataProvider = " dp " )
public void test1(String s) {
}
@Test(dataProvider = " dp " )
public void test2(String s) {
}
将会显示:
test1
test2
5.5.3 - Parameters in reports
被用于调用测试方法的参数将在TestNG生成的HTML报告中显示。实例如下:
发表评论
-
easymock教程-运行时返回值或者异常
2010-11-30 16:36 5692前面的教程中,我们看到easymock可以通过 ... -
easymock教程-改变同一个方法调用的行为
2010-11-30 17:06 3335在easymock中,对于mock对象的同一个方法,可 ... -
easymock教程-自定义参数匹配器
2010-11-30 18:18 4054虽然easymock中提供了大量的方法来进行参数匹配, ... -
easymock教程-目录
2010-10-14 10:44 8441easymock是目前比较流行的java mock 工 ... -
easymock教程-单元测试中的主要测试对象和依赖
2010-10-14 14:01 3639在单元测试中,通常我们都会有一个明确的测试对象,我们 ... -
easymock教程-record-replay-verify模型
2010-10-15 14:50 7276record-replay-verify 模型容许记录 ... -
easymock教程-easymock的典型使用
2010-10-15 17:14 6186关于easymock的典型使用方式,在easym ... -
easymock教程-class mocking
2010-10-26 16:54 2796前面的例子中,mock的对象都是基于interface ... -
easymock教程-使用MockControl
2010-10-26 17:18 4434在easymock中,通常我们使用一下的代码来创建m ... -
easymock教程-strict和nice
2010-11-19 11:39 4134在easymock的使用过程中,当创建mock对象时, ... -
easymock教程-创建stub对象
2010-11-23 17:51 3150前面教程中有个章节讨论到mock和stub的概念差 ... -
easymock教程-mock的限制
2010-11-25 11:12 12212easymock并不是万能的,在使用easymock时 ... -
easymock教程-放宽调用次数
2010-11-29 15:55 3246对于mock对象上的mock方法的调用,easymoc ... -
easymock教程-命名mock对象
2010-11-29 16:34 3037在创建mock对象的时候,我们可以命名mock对象。 ... -
easymock教程-参数匹配
2010-11-29 18:57 7194easymock中提供了非常多的方法来实现参数匹配,基 ... -
easymock教程-partial class mocking
2010-11-30 14:23 2875easymock中提供对于类的mock功能,我们可以方 ... -
easymock教程-mock和stub
2010-08-26 15:26 5905作为测试的基本概念,在开发测试中经常遇到mock和st ... -
推荐升级easymock到新的3.0版本
2010-06-26 20:40 1835一直在使用easymock作为mock工具,但是eas ... -
loadrunner license设置问题
2008-02-18 11:35 7449初学loadrunner,今天准备用这个工具测试一下手头的一个 ... -
TestNG官方文档中文版(1)-介绍
2008-03-18 22:25 1773最近决定开始使用TestNG ...
相关推荐
根据提供的文件信息,本文将对TestNG这一Java测试框架的相关知识点进行详细解析。TestNG(Test Next Generation)是一种用于Java语言的单元测试框架,它在JUnit的基础上进行了许多改进,提供了更强大、更灵活的测试...
通过学习TestNG官方文档中文翻译,新手可以快速上手,理解其核心概念和功能,进一步提升自动化测试的效率和质量。在实际项目中,结合具体业务需求,灵活运用TestNG的特性,可以构建出高效、稳定的测试框架。
- **使用 testng.xml 设置参数**:可以在 testng.xml 中定义参数,然后在测试方法中使用 `@Parameters` 注解引用这些参数。 - **使用 DataProviders 提供参数**:通过 `@DataProvider` 注解提供数据集,测试方法可以...
这个"Spring2.5中文框架开发手册"旨在帮助中国开发者更好地理解和应用Spring框架,尤其是对于那些不熟悉英文文档的开发者来说,中文版的文档尤其宝贵。 首先,Spring框架的核心是依赖注入(Dependency Injection,...
在 Windows 系统中,安装和配置过程略有不同,具体步骤可以参考 TestNG++ 的官方文档《TestNG++ Installation & Configuration Guide for MSVC Users》。 总的来说,TestNG++ 提供了一个强大的测试框架,支持在 C++...
《JUnit in Action 中文版》是一本专注于Java单元测试框架JUnit的专业书籍,旨在帮助开发者深入理解和熟练运用这个强大的工具。本书结合实际案例,详细讲解了如何有效地进行单元测试,提升软件开发的质量和效率。 ...
6. **报告美化**: 使用ExtentReports和TestNG美化测试报告,提高可读性和易用性。 #### 环境配置 1. **JDK**: 需要1.7及以上版本。 2. **IDE**: 推荐使用Eclipse或IntelliJ IDEA。 3. **RestAssured**: 最新版。 4...
### Spring Framework 中文知识点解析 #### 一、Spring框架概述 **Spring框架**是一个轻量级的开源框架,主要用于简化企业级应用的开发。它通过提供一个强大的倒置控制(Inversion of Control, IoC)容器来管理...
许晓斌(Juven Xu),一位国内知名的Maven技术专家,不仅撰写了大量技术文章,翻译了《Maven权威指南》,还建立了Maven中文社区,为Maven在国内的普及做出了巨大贡献。 #### Maven实战:从理论到实践的桥梁 ...
标题中的"破发时间"可能是该工具的中文译名,强调了其核心功能——提醒用户适时休息。"Updated the heading"说明这个项目或应用进行了更新,特别是对头部或标题部分进行了改进,可能是为了提升用户体验或者更准确地...
15. **学习资源**:订阅官方文档、Stack Overflow、GitHub上的开源项目、博客如InfoQ和DZone,以及社区如Reddit的r/java和Spring Boot中文社区,保持学习和分享的习惯。 通过深入学习并实践这些工具和技术,开发者...