JUnit和TestNG的区别

网上看了一篇英文帖子,讲解JUnitTestNG框架的区别,挺好的,我这里翻译下。

  1.对于注解类的支持

  2.测试参数化

  对于TestNG和JUnit都有不同的参数化设定功能,可是表现形式不同。参数化设定意味着当运行测试的时候,参数可以从外部传入到这个测试单元中。

  对于TestNG来说,要2部分,一是当构造测试代码时候,要用@Parameters(value=XXX)来表示这个测试需要什么参数,这样的优点是可以让测试更加灵活并且可以根据不同的参数来得到不同的期望结果,比如:


public class TestNGTest6_1_0 {

@Test

@Parameters(value="number")

public void parameterIntTest(int number) {

System.out.println("Parameterized Number is : " + number);

}

}

  然后,在我们的XML文件中,我们把参数的具体值设置进来,如下:


<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >

<suite name="My test suite">

<test name="testing">

<parameter name="number" value="2"/>

<classes>

<class name="com.fsecure.demo.testng.TestNGTest6_0" />

</classes>

</test>

</suite>

  那么,如果我们要给的参数比较复杂,我们无法用一个简单的String或者 原子类型在XML文件”推“给测试方法,那么怎么办呢?这时候,我们就要用”拉“模型了,我们用一个DataProvider属性来给被测试的方法上声明它需要的数据,然后平行的,用@DataProvider注解来标注一个方法,让这个方法的返回值返回具体的数据,这样我们2个拼接下就完美了。

  比如说:下面代码声明我们的测试类需要一个DataProvider:


@Test(dataProvider = "Data-Provider-Function")

public void parameterIntTest(TestNGTest6_3_0 clzz) {

System.out.println("Parameterized Number is : " + clzz.getMsg());

System.out.println("Parameterized Number is : " + clzz.getNumber());

}

 然后相应的我们用@DataProvider来标注一个方法,这个方法提供了数据:


//This function will provide the patameter data

@DataProvider(name = "Data-Provider-Function")

public Object[][] parameterIntTestProvider() {

TestNGTest6_3_0 obj = new TestNGTest6_3_0();

obj.setMsg("Hello");

obj.setNumber(123);

return new Object[][]{

{obj}

};

}

  3.测试依赖性:

  对于JUnit 来说,所有的测试彼此之间都是独立的,毫无依赖性。

  但是对于 TestNG来说,我们完全可以让测试彼此之间有依赖性,做法就是dependsOnMethods属性来标识一个被依赖的测试方法:


@Test

public void method1() {

System.out.println("This is method 1");

}

@Test(dependsOnMethods={"method1"})

public void method2() {

System.out.println("This is method 2");

}

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-31 02:15:58

JUnit和TestNG的区别的相关文章

TestNG官方文档中文版(9)-重复失败测试,junit测试,jdk1.4支持

5.10 - Rerunning failed tests 套件中的测试失败时,每次testNG都会在输出目录中创建一个名为testng-failed.xml 的文件.这个xml文件包含只重新运行这些失败的测试方法的必要信息,容许只运行这些 失败的测试而不必运行全部测试.因此,一种典型的情况将是这样: java -classpath testng.jar;%CLASSPATH% org.testng.TestNG -d test-outputs testng.xml java -classpat

maven junit testng 问题

问题描述 maven构建的环境下,测试使用的是testNG.由于想看测试的覆盖率,于是装了个djunit插件(djunit基于junit).现象是:testNG运行ok,但是用junit或者djunit运行报错:junit.framework.AssertionFailedError: No tests found in XXXX(package-name)我的测试文件是这么写的:import org.testng.annotations.BeforeClass;import org.testn

JUnit 5系列之架构体系介绍

现在,我们已经知道了 如何配置 JUnit 5 环境 及 如何写一些测试,接下来就来看一点封面下的内容吧.本篇我们将讨论 JUnit 5 的架构体系,以及它之成形如此的原因. 概述 本文章是这个 JUnit 5 系列的一部分: 环境搭建 基础入门 架构体系 扩展模型(Extension Model) 条件断言 注入 动态测试 ... (如果不喜欢看文章,你可以戳这里看我的演讲,或者看一下最近的 vJUG 讲座,或者我在 DevoxxPL 上的 PPT. 本系列文章都基于 Junit 5发布的先行

Maven实战

Maven 实战 许晓斌  著 本书由国内社区公认的Maven专家Juven Xu亲自执笔,内容的权威性毋庸置疑. 本书是国内第一本公开出版的Maven专著.它内容新颖,基于最新发布的Maven 30,不仅详尽讲解了Maven 30的所有新功能和新特性,而且还将这些新功能和新特性与Maven 2x版本进行了对比,以便于正在使用Maven 2x版本的用户能更好地理解.本书内容全面,以从专家的角度阐释Maven的价值开篇,全面介绍了Maven的安装.配置和基本使用方法,以便于初学者参考:详细

在做自动化测试之前你需要知道的

什么是自动化测?   做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多.一直想动笔写一篇文章分享自动化测试实践中的一些经验.终于决定花点时间来做这件事儿. 首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner.jmeter),或自己所写的一段程序,用于生成1到100个测试数据.狭义上来讲,通工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从

自动化基础普及之selenium是啥?

Selenium 并不像QTP那样让人一下子就明白是什么?它是编程人员的最爱,但它却对测试新手产生了很大的阻碍.   Selenium 是啥? Selenium RC是啥? Webdriver 又是啥? RC 和 Webdriver 是啥关系? Webdriver 和编程语言啥关系? Selenium 能并行执行脚本嘛? Selenium 能做移动端自动化么?   这里虫师用简单方式,告诉你,他们错综复杂的关系.理顺了它们之间的关系才能真正使用它.     Selenium 是什么?   Sel

Douyu vs Play!

Douyu vs Play! 1.比较的版本: Douyu : 0.1,暂时没有对外开放源代码,仅用于学习.交流目的. Play : 1.0,稳定版.已对外开放源代码,能用于生产环境. 2.项目参与人数: Douyu : 1个. Play : 至少大于1个. 3.项目开发时间: Douyu : 2008年12月25号到2009年3月是萌芽期:先是有做个MVC框架的念头,浪费3个月时间折腾Servlet/JSP. 从2009年4月开始推翻Servlet/JSP从头来过,到2009年11月16号发布

在做自动化测试之前你需要知道的,转自:http://www.cnblogs.com/fnng/p/3653793.html

什么是自动化测?   做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多.一直想动笔写一篇文章分享自动化测试实践中的一些经验.终于决定花点时间来做这件事儿. 首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner.jmeter),或自己所写的一段程序,用于生成1到100个测试数据.狭义上来讲,通工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从

自动化基础普及之selenium是什么?

Selenium 并不像QTP那样让人一下子就明白是什么?它是编程人员的最爱,但它却对测试新手产生了很大的阻碍. Selenium 是啥? Selenium RC是啥? Webdriver 又是啥? RC 和 Webdriver 是啥关系? Webdriver 和编程语言啥关系? Selenium 能并行执行脚本嘛? Selenium 能做移动端自动化么? 这里虫师用简单方式,告诉你,他们错综复杂的关系.理顺了它们之间的关系才能真正使用它. Selenium 是什么? Selenium 是web