TestNG说Junit的区别


1.1 TestNG与JUnit的相同点:

  1. 使用annotation,且大部分annotation相同。
  2. 都可以进行单元测试(Unit test)。
  3. 都是针对Java测试的工具。

1.2 TestNG与JUnit的不同点:

  1. JUnit只能进行单元测试,TestNG可以进行单元测试,功能测试,端到端测试,集成测试等,主要是因为testNG存在depends可以进行测试用例的组合;
  2. TestNG需要一个额外的xml配置文件,配置测试的class、method甚至package。
  3. TestNG的运行方式更加灵活:命令行、ant和IDE,JUnit只能使用IDE。TestNG有自己的命令行执行方式。
  4. TestNG的annotation更加丰富和易懂,比如@ExpectedExceptions、@DataProvider等。
  5. 测试套件运行失败,JUnit 4会重新运行整个测试套件。TestNG运行失败时,会创建一个XML文件说明失败的测试,利用这个文件执行程序,就不会重复运行已经成功的测试。

1.3 TestNG比JUnit 4灵活性的体现:

  1. JUnit 4中必须把@BeforeClass修饰的方法声明为public static,这就限制了该方法中使用的变量必须是static。而TestNG中@BeforeClass修饰的方法可以跟普通函数完全一样。
  2. JUnit 4测试的依赖性非常强,测试用例间有严格的先后顺序。前一个测试不成功,后续所有的依赖测试都会失败。TestNG 利用@Test 的dependsOnMethods属性来应对测试依赖性问题。某方法依赖的方法失败,它将被跳过,而不是标记为失败。
  3. 对于n个不同参数组合的测试,JUnit 4要写n个测试用例。每个测试用例完成的任务基本是相同的,只是受测方法的参数有所改变。TestNG的参数化测试只需要一个测试用例,然后把所需要的参数加到TestNG的xml配置文件中。这样的好处是参数与测试代码分离,非程序员也可以修改参数,同时修改无需重新编译测试代码。
  4. 为了测试无法用String或原语值表示的复杂参数化类型,TestNG提供的@DataProvider使它们映射到某个测试方法。
  5. JUnit 4的测试结果通过Green/Red bar体现,TestNG的结果除了Green/Red bar,还有Console窗口和test-output文件夹,对测试结果的描述更加详细,方便定位错误。

1.定义测试任务

Junit中要定义测试任务是要写TestSuit的,居然要写硬编码,而TestNG全部写在testng.xml(名字可以自定义的)中的,然后可以通过ant来调用。

2.测试参数化

Junit是不带任何参数的,不论是测试方法还是配置方法,而TestNG都是可以添加参数的,有2种方法


  1. public class TestNGTest6_1_0 {            
  2.        <span style="white-space:pre">   </span>@Test  
  3.        <span style="white-space:pre">   </span>@Parameters(value="number")  
  4.        public void parameterIntTest(int number) {  
  5.           System.out.println("Parameterized Number is : " + number);  
  6.        }                                                 
  7.  }  
然后,在我们的Testng.xml文件中,我们把参数的具体值设置进来,如下:

  1. <!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >  
  2. <suite name="My test suite">  
  3.   <test name="testing">                       
  4.     <parameter name="number" value="2"/>   
  5.     <classes>  
  6.        <class name="com.fsecure.demo.testng.TestNGTest6_0" />  
  7.     </classes>  
  8.   </test>  
  9. </suite> 

3.测试依赖性

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

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









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值