testng junit 比较和junit有什么优缺点,该如何选择

testng和junit有什么优缺点,该如何选择_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
testng和junit有什么优缺点,该如何选择
我有更好的答案
原因:1.testng底层调用junit2,但junit也有更便捷的时候。比如soft assertion.历史上曾有testng优于junit的一段时期。junit则要依靠第三方工具提供。5.junit能做的事情testng也都能做,testng你要自己去实现静态类来做。6.junit是testng的底层,灵活度上更高,数据驱动,多线程并发执行测试用例。testng更便捷,自带,但随后junit已更新并追赶上来3.testng的data provider使用较方便4.testng能做的事情junit都能做,但是有的地方会比较麻烦,例如,junit可以直接继承jassert做。testng调用junit结论是两者差不多,一般人用用testng就好
采纳率:96%
来自团队:
为您推荐:
其他类似问题
junit的相关知识
等待您来回答testng和junit有什么优缺点,该如何选择? - 知乎35被浏览3633分享邀请回答@BeforeClass
public static void oneTimeSetUp() {
// one-time initialization code
System.out.println("@BeforeClass - oneTimeSetUp");
JavaTestNG@BeforeClass
public void oneTimeSetUp() {
// one-time initialization code
System.out.println("@BeforeClass - oneTimeSetUp");
Java在JUnit 4中,注释命名约定有点混乱,例如“Before”,“After”和“Expected”,我们并不真正了解“Before”和“After”之前的内容,以及要测试中的“预期” 方法。TestiNG更容易理解,它使用类似“BeforeMethod”,“AfterMethod”和“ExpectedException”就很明了。2. 异常测试“异常测试”是指从单元测试中抛出的异常,此功能在JUnit 4和TestNG中都可实现。JUnit 4@Test(expected = ArithmeticException.class)
public void divisionWithException() {
int i = 1/0;
JavaTestNG@Test(expectedExceptions = ArithmeticException.class)
public void divisionWithException() {
int i = 1/0;
Java3. 忽略测试“忽略”表示是否应该忽略单元测试,该功能在JUnit 4和TestNG中均可实现。JUnit 4@Ignore("Not Ready to Run")
public void divisionWithException() {
System.out.println("Method is not ready yet");
JavaTestNG@Test(enabled=false)
public void divisionWithException() {
System.out.println("Method is not ready yet");
Java4. 时间测试“时间测试”表示如果单元测试所花费的时间超过指定的毫秒数,则测试将会终止,并将其标记为失败,此功能在JUnit 4和TestNG中均可实现。JUnit 4@Test(timeout = 1000)
public void infinity() {
while (true);
JavaTestNG@Test(timeOut = 1000)
public void infinity() {
while (true);
Java5. 套件测试“套件测试”是指捆绑几个单元测试并一起运行。 此功能在JUnit 4和TestNG中都可实现。 然而,两者都使用非常不同的方法来实现它。JUnit 4“”和“”用于运行套件测试。下面的类代码表示在JunitTest5执行之后,单元测试“JunitTest1”和“JunitTest2”一起运行。 所有的声明都是在类内定义的。@RunWith(Suite.class)
@Suite.SuiteClasses({
JunitTest1.class,
JunitTest2.class
public class JunitTest5 {
JavaTestNGXML文件用于运行套件测试。以下XML文件表示单元测试“TestNGTest1”和“TestNGTest2”将一起运行。&suite name="My test suite"&
&test name="testing"&
&class name="com.fsecure.demo.testng.TestNGTest1" /&
&class name="com.fsecure.demo.testng.TestNGTest2" /&
&/classes&
XMLTestNG可以做捆绑类测试,也可以捆绑方法测试。 凭借TestNG独特的“分组”概念,每种方法都可以与一个组合相结合,可以根据功能对测试进行分类(分组)。 例如,下面是一个有四个方法的类,三个组(method1,method2和method3)@Test(groups="method1")
public void testingMethod1() {
System.out.println("Method - testingMethod1()");
@Test(groups="method2")
public void testingMethod2() {
System.out.println("Method - testingMethod2()");
@Test(groups="method1")
public void testingMethod1_1() {
System.out.println("Method - testingMethod1_1()");
@Test(groups="method4")
public void testingMethod4() {
System.out.println("Method - testingMethod4()");
Java使用以下XML文件,可以仅使用组“method1”执行单元测试。&suite name="My test suite"&
&test name="testing"&
&include name="method1"/&
&class name="com.fsecure.demo.testng.TestNGTest5_2_0" /&
&/classes&
XML通过“分组”测试概念,集成测试的可能性是无限制的。 例如,我们只能从所有单元测试类中测试“DatabaseFuntion”分组。6. 参数化测试“参数化测试”是指单位测试参数值的变化。 此功能在JUnit 4和TestNG中都实现。 然而,两者都使用非常不同的方法来实现它。JUnit 4“”和“”用于提供单元测试的参数值,必须返回List [],参数将作为参数传入类构造函数。@RunWith(value = Parameterized.class)
public class JunitTest6 {
public JunitTest6(int number) {
this.number =
@Parameters
public static Collection&Object[]& data() {
Object[][] data = new Object[][] { { 1 }, { 2 }, { 3 }, { 4 } };
return Arrays.asList(data);
public void pushTest() {
System.out.println("Parameterized Number is : " + number);
Java这里有很多限制,我们必须遵循“JUnit”的方式来声明参数,并且必须将参数传递给构造函数才能初始化类成员作为测试的参数值。参数类的返回类型为“List []”,数据已被限制为String或用于测试的原始类型值。TestNGXML文件或“”用于提供不同参数进行测试。用于参数化测试的XML文件 –只有“”在需要参数测试的方法中声明,参数化数据将在TestNG的XML配置文件中提供。 通过这样做,我们可以使用不同数据集的单个测试用例,甚至获得不同的结果。 另外,即使是最终用户,QA还是QE都可以在XML文件中提供自己的数据进行测试。public class TestNGTest6_1_0 {
@Parameters(value="number")
public void parameterIntTest(int number) {
System.out.println("Parameterized Number is : " + number);
JavaXML文件的内容如下 –&suite name="My test suite"&
&test name="testing"&
&parameter name="number" value="2"/&
&class name="com.fsecure.demo.testng.TestNGTest6_0" /&
&/classes&
XML用于参数化测试将数据值拉入XML文件可能非常方便,但测试偶尔会需要复杂的类型,这些类型不能被表示为一个字符串或一个原始类型值。 TestNG使用注解来处理这种情况,这有助于将复杂参数类型映射到测试方法。 for Vector,String或Integer作为参数,参考如下代码 –@Test(dataProvider = "Data-Provider-Function")
public void parameterIntTest(Class clzz, String[] number) {
System.out.println("Parameterized Number is : " + number[0]);
System.out.println("Parameterized Number is : " + number[1]);
//This function will provide the patameter data
@DataProvider(name = "Data-Provider-Function")
public Object[][] parameterIntTestProvider() {
return new Object[][]{
{Vector.class, new String[] {"java.util.AbstractList",
"java.util.AbstractCollection"}},
{String.class, new String[] {"1", "2"}},
{Integer.class, new String[] {"1", "2"}}
Java作为对象的参数“TestNGTest6_3_0”是一个简单的对象,只需使用get/set方法进行演示。@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());
//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[][]{
JavaTestNG的参数化测试非常用户友好和灵活(在XML文件或类内)。 它可以支持许多复杂的数据类型作为参数值,可能性是无限的。 如上例所示,我们甚至可以传入我们自己的对象(TestNGTest6_3_0)进行参数化测试7.依赖性测试“参数化测试”表示方法是依赖性测试,它将在所需方法之前执行。 如果依赖方法失败,则所有后续测试将会被跳过,不会被标记为失败。JUnit 4JUnit框架着重于测试隔离; 目前它不支持此功能。TestNG它使用“dependOnMethods”来实现依赖测试如下 –@Test
public void method1() {
System.out.println("This is method 1");
@Test(dependsOnMethods={"method1"})
public void method2() {
System.out.println("This is method 2");
Java“method2()”只有在“method1()”运行成功的情况下才会执行,否则“method2()”将跳过测试。结论在考虑所有功能比较之后,建议使用TestNG作为Java项目的核心单元测试框架,因为TestNG在参数化测试,依赖测试和套件测试(分组概念)方面更加突出。 TestNG用于高级测试和复杂集成测试。 它的灵活性对于大型测试套件尤其有用。 此外,TestNG还涵盖了整个核心的JUnit4功能。这样说来,好像也没有理由使用JUnit了。推荐一个
1添加评论分享收藏感谢收起0添加评论分享收藏感谢收起&&&&&&&&JUnit 和 TestNG的区别
正在努力加载播放器,请稍等…
正在努力加载播放器
大小:157.93KB&&所需金币:50
&& & 金币不足怎么办?
下载量:-次 浏览量:511次
贡献时间: 23:00:02
文档标签:
已有-位用户参与评分
同类热门文档
你可能喜欢
看过这篇文档的还看过
阅读:867&&下载:30
阅读:409&&下载:7
阅读:187&&下载:2
阅读:203&&下载:0
阅读:223&&下载:0
阅读:313&&下载:0
阅读:202&&下载:0
阅读:260&&下载:0
阅读:384&&下载:0
阅读:458&&下载:0
该用户的其他文档
所需财富值:
50文件大小:157.93KB
您当前剩余财富值:&&
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
举报该文档侵犯版权。
例: /help.shtmljunit 和 testNG的区别 - qq_的博客 - CSDN博客
junit 和 testNG的区别
&一、junit 和 testNG的区别
1.Junit是什么?
JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。[1-2]
JUnit是由 Erich Gamma 和 Kent Beck 编写的一个框架(regression testing framework)。Junit测试是程序员测试,即所谓,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。
2.testNG是什么?
TestNG是一个测试框架,其灵感来自和NUnit,但同时引入了一些新的功能,使其功能更强大,使用更方便。
设计涵盖所有类型的测试:单元,功能,端到端,集成等,它需要JDK5或更高的JDK版本。
本教程将TestNG框架需要测试的企业级应用提供健壮性和可靠性上给你带来很大的理解。
1.&&&&&&&& JDK 5 Annotations (JDK 1.4 可以用JavaDoc代替).
一个典型的Junit的类
import junit.framework.TestC
public class Jtest extends TestCase {
&&&&&& protected void setUp() throws Exception {
&&&&&&&&&&&&& super.setUp();
&&&&&&&&&&&&&&&&&&&& //some initial code
&&& protected void tearDown() throws Exception {
&&&&&&& super.tearDown ();
&&&&&&& //release resource and rollback
public void testFunction {
&&&&&& //test code
对应的TestNG的测试类,我们写最简单的情况。
public class NGtest{
&&& @Configuration(beforeTestClass=true)
&&& public void setUp() {
&&&&&&& //some initial code
@Configuration(afterTestClass = true)
&&& public void tearDown (){
&&&& &&//release resource and rollback
&&& @Test( )
&&& public void testFunction (){
&&&&&& //test code
这样写可以比较明显的看到两者的对应关系(注意TestNG的方法的名字是可以随便取的,取一样的名字只是为了让你容易找到对应的关系)
这说明TestNG是从Junit发展而来的,至少借鉴了很多Junit的思想(实际上TestNG的作者本身就是Junit的小组成员之一)。
我们从最表面的现象来看看吧
l&&&&&&&& TestNG没有继承任何类,甚至接口!!
l&&&&&&&& JDK 5 Annotations
这2者是息息相关的,为什么我们不用继承任何类,因为信息都在注释里面,这样会带来很多好处(绝不仅仅是命名的方便)。
这就是大概的一些区别!
下面有一个网址:
里面有testNg的的教程:/html/testng/list_28_2.html
我的热门文章504 Gateway Time-out
504 Gateway Time-out}

我要回帖

更多关于 testng与junit的区别 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信