- 浏览: 581771 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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.10 - Rerunning failed tests
套件中的测试失败时,每次testNG都会在输出目录中创建一个名为testng-failed.xml的文件。这个xml文件包含只重新运行这些失败的测试方法的必要信息,容许只运行这些失败的测试而不必运行全部测试。因此,一种典型的情况将是这样:
java - classpath testng.jar; % CLASSPATH % org.testng.TestNG - d test - outputs test - outputs\testng - failed.xml
注意testng-failed.xml将包含所有必要的依赖方法,所以可以保证运行失败的方法而不运行任何被跳过的(失败)方法。
5.11 - JUnit tests
TestNG可以运行junit测试。所需要的只是在testng.classNames属性中指定junit测试类,并设置testng.junit属性为true。
< classes >
<!-- -->
这种情况下TestNG的行为类似jnit:
* 类中所有以test*开头的方法将被运行。
* 如果测试类中有方法setUp(), 将在每次测试方法调用前被执行。
* 如果测试类中有方法tearDown(),将在每次测试方法调用后被执行。
5.12 - JDK 1.4
TestNG也可以在JDK1.4下工作。在这种情况下,需要使用发布的jdk1.4的jar文件(名为testng-...-jdk14.jar)。唯一的差别是在于注解,jdk1.4下使用流行的XDoclet javadoc注解语法:
/**
* @testng.before-class = "true"
*/
public void setUp() {
// code that will be invoked when this test is instantiated
}
/**
* @testng.test groups = "functest" dependsOnGroups = "group1,group2"
*/
public void testItWorks() {
// your test code
}
}
javadoc语法的规则非常简洁,和jdk1.5注解的唯一差别是数组串数组需要特别写成单独的,逗号或空格分隔的字符串。虽然值周围的双引号是可选的,但还是建议在任何情况下都使用双引号,以保证将来迁移到jdk1.5时可以比较容易。
同样需要在<testng>的ant任务中指明sourcedir属性(或者在命令行中使用-sourcedir),以便testNG可以找到你的测试文件的源代码来解析javadoc注解。
这里是jdk1.4和jdk5注解的语法对照表:
(表格在blog中不好排版,不在这里发了,详细内容请参考官方文档的原文:http://testng.org/doc/documentation-main.html#jdk-14。)
更多jdk1.4的支持范例,请参考发行包中的test-14文件夹,这里包含全部的JDK 1.5测试对应的使用javadoc注解的内容。
5.13 - Running TestNG programmatically
在自己的程序中调用testNG也很简单:
TestNG testng = new TestNG();
testng.setTestClasses( new Class[] { Run2. class });
testng.addListener(tla);
testng.run();
这个范例创建了一个TestNG对象并运行测试类Run2。还增加了一个TestListener。你可以使用适配器类org.testng.TestListenerAdapter或自己实现org.testng.ITestListener。这个接口包含多个回调方法,使得可以追踪测试的开始,成功,失败等等。
类似的,可以使用testng.xml文件调用TestNG或者自己创建一个虚拟的testng.xml文件。为了做到这点,需要使用org.testng.xml包的类:XmlClass, XmlTest, 等等。每个类对应他们xml标签。
例如,假设你想创建下面的虚拟文件:
< test name ="TmpTest" >
< classes >
< class name ="test.failures.Child" />
< classes >
</ test >
</ suite >
你将使用下面的代码:
suite.setName( " TmpSuite " );
XmlTest test = new XmlTest(suite);
test.setName( " TmpTest " );
List < XmlClass > classes = new ArrayList < XmlClass > ();
classes.add( new XmlClass( " test.failures.Child " ));
test.setXmlClasses(classes) ;
然后你可以将XmlSuite传递给TestNG:
suites.add(suite);
TestNG tng = new TestNG();
tng.setXmlSuites(suites);
tng.run();
完整的API请参考javadoc。
5.14 - BeanShell and advanced group selection
如果testng.xml中的<include>和<exclude>标签还不足够满足你的需要,你可以使用BeanShell表达式来决定是否需要将一个特定的测试方法包含在测试操作中。只需要在<test>标签下指定这个表达式:
< method-selectors >
< method-selector >
< script language ="beanshell" > <![CDATA[
groups.containsKey("test1")
]]> </ script >
</ method-selector >
</ method-selectors >
<!-- -->
当发现testng.xml中有<script>标签,TestNG将忽略当前<test>标签中的以后的组和方法的<include>和<exclude>标签:BeanShell表达式将是决定一个测试方法是否包含的唯一方法。
这里有一些BeanShell脚本的额外信息:
* 必须返回boolean值。除了这个约束,任何有效的BeanShell代码都被容许.(例如,你可能想在工作日返回true而在周末返回false,这将容许你更加日期不同差异性的运行测试。
* TestNG为了便利定义了以下变量:
java.lang.reflect.Method method: 当前测试方法
org.testng.ITestNGMethod testngMethod: 当前测试方法的描述
java.util.Map<String, String> groups: 当前测试方法所属组的Map
* 你可能需要在你的表达式前后增加CDATA声明(如上面所示)以避免讨厌的xml转义字符。
发表评论
-
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 8442easymock是目前比较流行的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设计初衷是为了提供一种更为简洁和强大的测试方法,相较于JUnit,TestNG支持更多高级特性,如并行测试执行、依赖管理、数据驱动测试等。 #### 1.2 特性介绍 - **并行测试执行**:允许用户在同一时间运行多个...
为了解决这个问题,"junit-dataprovider"应运而生,它为JUnit添加了一个类似于TestNG的data provider功能,使得JUnit测试更加灵活和强大。 1. **junit-dataprovider简介** "junit-dataprovider"是一个JUnit扩展,...
TestNG 是一个强大的自动化测试框架,它在Java领域被广泛使用,为开发人员和测试工程师提供了灵活、功能丰富的测试解决方案。相较于JUnit,TestNG引入了许多先进的特性,使其更适合大规模的测试项目。 TestNG的核心...
TestNG是一个功能强大且高度灵活的测试框架,它在JUnit和NUnit的基础上进行了大量的创新和改进,旨在简化测试代码的编写过程,提高测试效率。TestNG的设计目标是覆盖各种类型的测试场景,包括但不限于单元测试、功能...
TestNG是一款功能强大的Java测试框架,它以JUnit和NUnit为灵感来源,但引入了许多增强功能,使得自动化测试更加高效和灵活。TestNG的主要目标是支持所有类型的测试场景,包括功能测试、单元测试、集成测试以及压力...
4. **数据驱动测试**:TestNG支持数据驱动测试,这意味着可以将测试数据与测试逻辑分离,从而使得测试更加易于维护和扩展。通过这种方式,同一个测试可以使用不同的数据集多次运行,以验证其在不同条件下的行为是否...
TestNG是Java编程语言中的一款强大的自动化测试框架,与JUnit和Selenium等工具配合使用,为软件测试提供了全面且灵活的解决方案。TestNG由Cédric Beust创建,旨在提高测试效率并支持更复杂的测试场景,如并发测试、...
4. TestNG:TestNG 是一个更全面的测试框架,比 JUnit 更加强大且灵活,它支持单元测试、集成测试、功能测试和端到端测试。TestNG 引入了诸如并行测试、测试分组、依赖注入、配置方法等特性,可以满足大型项目的复杂...
TestNG是Java领域中广泛使用的自动化测试框架,由Cedric Beust创建,它是JUnit的一个增强版,提供了更多功能,如并发测试、参数化测试、依赖性管理等。而TestNG XSLT扩展则进一步增强了其报告功能,允许用户通过...
TestNG是Java编程环境中一个强大的测试框架,与JUnit相比,它提供了更丰富的功能,如支持多种测试类型、灵活的测试配置、并发测试等。Eclipse是广受欢迎的Java集成开发环境(IDE),它允许开发者通过插件来扩展其...
TestNG和JUnit是两种广泛使用的Java测试框架,它们在软件质量保证和持续集成流程中扮演着重要角色。本文将深入探讨这两个测试框架的特性和差异,以及为什么TestNG被誉为下一代测试框架。 TestNG是由Cedric Beust...
TestNG的官方文档是学习和掌握这个框架的重要资源,中文翻译版使得中国开发者更容易理解和应用。 1. **TestNG基本概念** - **测试套件(Test Suite)**:TestNG允许你组织多个测试类或测试配置文件为一个测试套件...
标题与描述均提到了"Testing-JUnit-TestNG",这明确指向了软件测试领域中的两个重要的测试框架:JUnit和TestNG。这两个框架在Java开发社区中被广泛使用,用于编写自动化测试用例,以确保代码质量和功能正确性。 ###...
1. **TestNG**: TestNG是一个功能强大的Java测试框架,它支持多种类型的测试,包括单元测试、集成测试和端到端测试。TestNG的结果默认是以XML格式输出,这为使用XSLT进行格式化提供了基础。 2. **XSLT (Extensible ...
其中,JDK 是 Java 开发工具包,Eclipse 是一个集成开发环境,Junit 和 TestNG 是测试框架,Python 是一种流行的编程语言。 二、JDK 安装 首先,需要下载并安装 JDK。下载地址为 ...
无论您使用TestNG,JUnit或其他测试框架,本书提供的测试设计模式都会告诉您如何改进您的测试,对如何让代码和设计变得更可测试提供具体的建议。 目录: 第1章 起步 1.1 超越JUnit 3 1.2 JUnit 4 1.3 针对可测试性而...
- **成功、失败和断言**:TestNG 可以清晰地区分测试的成功和失败,并提供详细的断言错误信息。 - **日志和结果**:提供了多种方式记录测试的执行过程,包括日志文件和测试报告。 - **日志监听器**:可以自定义日志...