JUnit4 学习笔记

时间:2022-04-01 22:56:45

一、环境搭建:

1、需要用的包:

  JUnit4.7:http://files.cnblogs.com/files/ShawnYang/junit4.7.zip

  hamcrest-1.2:http://files.cnblogs.com/files/ShawnYang/hamcrest-1.2.zip

需要导入的jar包:

JUnit4 学习笔记

JUnit4 学习笔记

2、需要注意的是,将JUnit包加入项目中之后,就不要使用eclipse自带的JUnit Library了。如果使用eclispe自带的JUnit包,又加上从外部引入的 hamcrest 包,那么在调试 test case 的时候会出现 classloader 相关的异常。所以要统一从外部引入。

二、什么是单元测试

写了个类,要给别人用,会不会有bug?怎么办?测试一下。
用 main 方法测试好不好?不好!
1、不能一起运行,也就是不能一次测试多个方法!
JUnit可以选中类测试所有方法,也可以选中方法,测试单个方法,要灵活一些。
2、大多数情况下需要人为的观察输出确定是否正确。

JUnit 只需要鼠标选中整个类的测试方法 run as JUnit Test,如果bar为绿就说明整个类的所有方法测试通过了。

三、为什么要进行单元测试
重用测试,应付将来的实现的变化;
提高自信心,明确知道自己的东西是没问题的。

JUnit4 HelloWorld
1、new project
2、建立类
3、建立 testcase

四、放弃旧的断言,使用 hamcrest 断言
1、assertThat
2、使用 hamcrest 的匹配方法
a) 更自然
3、示例
a) assertThat(n,allOf(greaterThan(1),lessThan(15)));
assertThat(n,anyOf(greaterThan(16),lessThan(8)));
assertThat(n,anything());
assertThat(str,is("shawn"));
assertThat(str,not("shawn"));

b) assertThat(str,containsString("shawn"));
assertThat(str,endWith("shawn"));
assertThat(str,startWith("shawn"));
assertThat(n,equalTo(nExpected));
assertThat(str,equalToIgnoringCase("developerWorks"));
assertThat(str,equalToIgnoringWhiteSpace("developerWorks"));

c) assertThat(d,closeTo(3.0,0.3));
assertThat(d,greaterThan(3.0));
assertThat(d,lessThan(10.0));
assertThat(d,greaterThanOrEqualTo(5.0));
assertThat(d,lessThanOrEqualTo(16.0));

d) assertThat(map,hasEntry("shawn","shawn"));
assertThat(iterabel,hasItem("shawn"));
assertThat(map,hasKey("shawn"));
assertThat(map,hasValue("shawn"));

五、Failure和Error
1、Failure是指测试失败
2、Error是指测试程序本身出错

注意:有Error 就不会再去找Failure了。

六、JUnit4 Annotation
1、@Test:测试方法
a) (expected=XXException.class)
b) (timeout=xxx)
2、@Ignore:被忽略的测试方法
3、@Before:每一个测试方法之前运行
4、@After:每一个测试方法之后运行
5、@BeforeClass:所有测试开始之前运行
6、@AfterClass:所有测试结束之后运行

运行多个测试
右键点击测试类:run as JUnit Test

最后注意
1、遵守约定,比如
a) 类放在test包中;
b) 类名用 XXXTest结尾;
c) 方法用 testXXXMehtod 命名。