testNG与Junit相同功能概要介绍(1)

上一篇 / 下一篇  2012-03-22 11:49:47 / 个人分类:TestNG

1. OverView

TestNG是一种基于注释的测试框架,通过添加诸如灵活的装置、测试分类、参数测试和依赖方法等特性来克服JUnit的一些不足之处。此外,TestNG运行于Java 5.0(通过注释)和Java 1.4(通过JavaDoc样式的注释)之上。本篇博文仅将和JUnit相同功能做简单介绍,另外testNG独有功能将在以后撰文介绍。

 

testNG的eclipse插件地址:http://beust.com/eclipse

2. 概念介绍

2.1 简单测试

在附件中的代码包中有生产代码 Money 类。请看以下对 Money 类的测试代码(所有测试代码也可以在附件的代码包中查找)

 

Java代码  收藏代码
  1. package main;  
  2.   
  3. import org.testng.annotations.Test;  
  4.   
  5. public class TestSample {  
  6.   
  7.     @Test  
  8.     public void add() {  
  9.         Money m12CHF = new Money(12"CHF");  
  10.         Money m14CHF = new Money(14"CHF");  
  11.         Money expected = new Money(26"CHF");  
  12.         Money result = m12CHF.add(m14CHF);  
  13.         assert true : expected.equals(result);  
  14.     }  
  15. }  
 

 

在这段测试代码中有几点需要注意和 Junit 测试代码不同之处:

1 该测试方法主要测试 Money 类中 add ()方法是否能正确对货币进行操作。和 Junit 中对测试方法用 @Test 相同。方法名字可以自行定义 。

2 测试类也不需要继承 TestCase 。testNG 中测试类不需要继承任何 接口和类。

3 可以使用 Junit 中 断言形式 。但也可以使用代码中所写断言形式。

 特性测试

请先阅读一遍下列代码,然后我会对这段代码的一些 特性进行详细说明。

Java代码  收藏代码
  1. package main;  
  2.   
  3. import java.util.ArrayList;  
  4.   
  5. import org.testng.annotations.AfterClass;  
  6. import org.testng.annotations.BeforeClass;  
  7. import org.testng.annotations.Test;  
  8.   
  9. public class TestFixture {  
  10.     private Money f12CHF;  
  11.     private Money f14CHF;  
  12.     private Money f26CHF;  
  13.     private Money f28USD;  
  14.   
  15.     @BeforeClass  
  16.     public void setUp() {  
  17.         f12CHF = new Money(12"CHF");  
  18.         f14CHF = new Money(14"CHF");  
  19.         f26CHF = new Money(26"CHF");  
  20.         f28USD = new Money(28"USD");  
  21.     }  
  22.   
  23.     @Test  
  24.     public void testAdd() {  
  25.         Money result = f12CHF.add(f14CHF);  
  26.   
  27.         assert true : f26CHF.equals(result);  
  28.     }  
  29.   
  30.     // @Test(enabled = false, expectedExceptions =  
  31.     // IndexOutOfBoundsException.class)  
  32.     @Test(enabled = true, expectedExceptions = IndexOutOfBoundsException.class)  
  33.     public void empty() {  
  34.         new ArrayList<Object>().get(0);  
  35.     }  
  36.   
  37.     @Test(timeOut = 1000)  
  38.     public void testTimeOut() throws InterruptedException {  
  39.         Thread.sleep(1000);  
  40.         // Thread.sleep(1001);  
  41.         Money result = f12CHF.add(f14CHF);  
  42.     }  
  43.   
  44.     @AfterClass  
  45.     public void tearDown() {  
  46.         f12CHF = null;  
  47.         f14CHF = null;  
  48.         f26CHF = null;  
  49.         f28USD = null;  
  50.     }  
  51. }  
 

1 . @Before Class和 @After Class

这两个属性表明标注的方法在当前被执行测试类的第一个测试方法之前和之后执行。 这两个方法名可以自行定义为其他任何名字。

2 . @Test(enabled = true/false, expectedExceptions = XXXException.class )

TDD中,对错误的测试,我们以前只能通过 fail 来产生一个错误,并在 try 块里面 断言 来测试。现在,通过@Test 中的 expectedExceptions 属性就可以实现了。 expectedExceptions 属性的值是一个异常的类型,如代码中的 IndexOutOfBoundsException.class 。 enable属性表明是否启用该标注方法。(可以通过切换注释上一行注解,运行查看 结果)

 

3 .@Test(timeOut= … )

该 标记 传入了一个时间(毫秒)给测试方法,如果测试方法在指定的时间之内没有运行完,则测试会失败,即使被测试方法测试正确也会失败。该标记主要用于测试被测试方法运行所需时间,即用于方法的简单性能测试。( 也可以通过切换注释Thread.sleep(1001),运行查看 结果 )

 

 


TAG: 套件测试 JUnit Junit JUNIT junit TestNG testNG 参数测试

 

评分:0

我来说两句

日历

« 2024-03-12  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 9316
  • 日志数: 12
  • 建立时间: 2011-03-08
  • 更新时间: 2012-06-06

RSS订阅

Open Toolbar