JUnit 4 初体验



准备工作

JDK 版本问题
JUnit 4.x 是基于 Java 5 的升级版本,它使用了 Tiger 中的很多新特性来简化原有的使用方式。正因为如此,它并不能直接运行在 JDK1.4.x 版本上。如果您需要在 JDK1.4.x 版本使用 JUnit 的话,请使用 3.8.1 版本。

Junit 环境变量设置
在系统环境变量中的CLASSPATH中添加:$JUNIT_HOME\junit-4.2.jar
或者
在编译的时候使用-classpath参数:javac -cp "$JUNIT_HOME\junit-4.2.jar" MyTest.java

JUnit 4 使用 Java 5 中的注解(annotation),以下是JUnit 4 常用的几个 annotation 介绍
@Before:初始化方法
@After:释放资源
@Test:测试方法
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@AfterClass:针对所有测试,只执行一次,且必须为static void



JUnit 4 初体验

一个简单的JUnit 4 单元测试例子,无任何业务逻辑上的测试,仅为查看上面介绍的几个常用注解(annotation)的运行顺序

代码清单1 MyTest.java
java 代码


   1. package org.cnRock.test; 
   2.  
   3. import org.junit.*; 
   4. import static org.junit.Assert.*; 
   5.  
   6. public class MyTest 
   7. { 
   8.     @Before 
   9.     public void myBefore() 
  10.     { 
  11.         System.out.println("in myBefore"); 
  12.     } 
  13.  
  14.     @Test 
  15.     public void test1() 
  16.     { 
  17.         System.out.println("in test1"); 
  18.         assertEquals((1+1),2); 
  19.     } 
  20.  
  21.     @Test 
  22.     public void test2() 
  23.     { 
  24.         System.out.println("in test2"); 
  25.         assertEquals((1+2),3); 
  26.     } 
  27.  
  28.     @After 
  29.     public void myAfter() 
  30.     { 
  31.         System.out.println("in myAfter"); 
  32.     } 
  33.  
  34.     @BeforeClass 
  35.     public static void myBeforeClass() 
  36.     { 
  37.         System.out.println("start, in myBeforeClass"); 
  38.     }; 
  39.  
  40.     @AfterClass 
  41.     public static void myAfterClass() 
  42.     { 
  43.         System.out.println("stop, in myAfterClass"); 
  44.     }; 
  45. };

编译运行

   1. javac -d . MyTest.java 
   2. java org.junit.runner.JUnitCore org.cnRock.test.MyTest

运行结果



   1. JUnit version 4.2 
   2. start, in myBeforeClass 
   3. .in myBefore 
   4. in test1 
   5. in myAfter 
   6. .in myBefore 
   7. in test2 
   8. in myAfter 
   9. stop, in myAfterClass 
  10.  
  11. Time: 0.016 
  12.  
  13. OK (2 tests)


一个加法运算的小程序,使用JUnit 4 对其进行单元测试

代码清单二 MyAdd.java

java 代码

   1. package org.cnRock; 
   2.  
   3. public class MyAdd   
   4. { 
   5.     public int add (int a, int b) { 
   6.         return a + b; 
   7.     } 
   8. } 


代码清单三 MyAddTest.java

java 代码


   1. package org.cnRock.test; 
   2.  
   3. import org.junit.*; 
   4. import static org.junit.Assert.*; 
   5.  
   6. import org.cnRock.*; 
   7.  
   8. public class MyAddTest 
   9. { 
  10.     MyAdd myAdd = new MyAdd(); 
  11.  
  12.     @Before 
  13.     public void myBefore() 
  14.     { 
  15.         System.out.println("in myBefore"); 
  16.     } 
  17.  
  18.     @Test 
  19.     public void addTest() 
  20.     { 
  21.         System.out.println("in addTest"); 
  22.         assertEquals(myAdd.add(1,2),3); 
  23.     } 
  24.  
  25.     @After 
  26.     public void myAfter() 
  27.     { 
  28.         System.out.println("in myAfter"); 
  29.     } 
  30.  
  31.     @BeforeClass 
  32.     public static void myBeforeClass() 
  33.     { 
  34.         System.out.println("start, in myBeforeClass"); 
  35.     }; 
  36.  
  37.     @AfterClass 
  38.     public static void myAfterClass() 
  39.     { 
  40.         System.out.println("stop, in myAfterClass"); 
  41.     }; 
  42. }; 


编译运行

   1. javac -d . MyAdd.java 
   2. javac -d . MyAddTest.java 
   3. java org.junit.runner.JUnitCore org.cnRock.test.MyAddTest

运行结果



   1. JUnit version 4.2 
   2. start, in myBeforeClass 
   3. .in myBefore 
   4. in addTest 
   5. in myAfter 
   6. stop, in myAfterClass 
   7.  
   8. Time: 0.016 
   9.  
  10. OK (1 test) 


从测试结果可以看出:
一个JUnit 4 的单元测试用例执行顺序为:
@BeforeClass --> @Before --> @Test --> @After --> @AfterClass

每一个测试方法的调用顺序为:
@Before --> @Test --> @After



参考资料:JUnit FAQ

你可能感兴趣的:(java,jdk,工作,单元测试,JUnit)