准备工作
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
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