JUnit和TestNG的区别

发表于:2014-8-18 10:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:平行线的凝聚    来源:51Testing软件测试网采编

  网上看了一篇英文帖子,讲解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());
}
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号