JUnit 4 初体验

本文介绍了JUnit4的基本使用方法,包括环境配置、注解使用及测试案例编写流程。通过两个实例演示了如何进行单元测试,并展示了不同注解的执行顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备工作

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值