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/
相关文章
|
测试技术
软件测试面试题:解释使用TestNG而不是JUnit框架的好处?
软件测试面试题:解释使用TestNG而不是JUnit框架的好处?
131 0
|
XML 测试技术 数据格式
利器 | TestNG 与 Junit 对比,测试框架如何选择?
利器 | TestNG 与 Junit 对比,测试框架如何选择?
|
XML 测试技术 数据格式
利器 | TestNG 与 Junit 对比,测试框架如何选择?
TestNG 和 Junit 作为两大流行的测试框架,有哪些区别?各有哪些优缺点?该如何选择呢?这里简要总结下: ![](https://ceshiren.com/uploads/default/original/3X/7/3/731391a1eddb1e44ccb4a50bedbe0df0cbdaf138.png) ![](https://ceshiren.com/uploads/def
|
XML 测试技术 数据格式
利器 | TestNG 与 Junit 对比,测试框架如何选择?
TestNG 和 Junit 作为两大流行的测试框架,有哪些区别?各有哪些优缺点?该如何选择呢?这里简要总结下: ![](https://ceshiren.com/uploads/default/original/3X/7/3/731391a1eddb1e44ccb4a50bedbe0df0cbdaf138.png) ![](https://ceshiren.com/uploads/def
|
数据格式 XML
|
2月前
|
Java 测试技术
JUnit 4 单元测试
单元测试是软件开发中必不可少的一环,但是在平常开发中往往因为项目周期紧,工作量大而被选择忽略,这样往往导致软件问题层出不穷。 线上出现的不少问题其实在有单元测试的情况下就可以及时发现和处理,因此培养自己在日常开发中写单元测试的能力是很有必要的。无论是对自己的编码能力的提高,还是项目质量的提升,都是大有好处,本文将介绍 Java 单元测试框架 JUnit 4 的基础认识和使用来编写单元测试,希望同样对你有所帮助。
|
4月前
|
Java 测试技术 数据库
Spring 单元测试(Junit)
Spring 单元测试(Junit)
|
6月前
|
测试技术
Junit单元测试
Junit单元测试
34 0
|
3月前
|
测试技术
Junit单元测试 org.junit.jupiter.api.extension.ParameterResolutionException异常处理
Junit单元测试 org.junit.jupiter.api.extension.ParameterResolutionException异常处理
55 0