JUnit4 学习笔记
一、环境搭建:
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包:


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 命名。
JUnit4 学习笔记的更多相关文章
- Junit4学习笔记
一.初始化标注 在老Junit4提供了setUp()和tearDown(),在每个测试函数调用之前/后都会调用. @Before: Method annotated with @Before exec ...
- Junit4学习笔记--方法的执行顺序
package com.lt.Demo.TestDemo; import java.util.Arrays; import java.util.Collection; import org.junit ...
- ActiveMQ学习笔记(5)——使用Spring JMS收发消息
摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...
- mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)
文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...
- Hibernate 马士兵 学习笔记 (转)
目录(?)[+] 第2课 Hibernate UML图 第3课 风格 第4课 资源 第5课 环境准备 第6课 第一个示例Hibernate HelloWorld 第7课 建立Annotation版本的 ...
- Spring Boot学习笔记2——基本使用之最佳实践[z]
前言 在上一篇文章Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用已经对Spring Boot的基本体系与基本使用进行了学习,本文主要目的是更加进一步的来说明对于Spring B ...
- Spring学习笔记(六)—— SSH整合
一.整合原理 二.整合步骤 2.1 导包 [hibernate] hibernate/lib/required hibernate/lib/jpa 数据库驱动 [struts2] struts-bla ...
- #Spring实战第二章学习笔记————装配Bean
Spring实战第二章学习笔记----装配Bean 创建应用对象之间协作关系的行为通常称为装配(wiring).这也是依赖注入(DI)的本质. Spring配置的可选方案 当描述bean如何被装配时, ...
- SSM框架学习笔记_第1章_SpringIOC概述
第1章 SpringIOC概述 Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. 1.1 控制反转IOC IOC(inversion of controller)是一种概念 ...
随机推荐
- iOS开发小工具
基本上在Mac Appstore里面都有,很多是免费的.因为某种原因要重装Mac系统(这么多年来首次重装Mac系统),特意整理了下备忘. 1.AppIcon: 可以瞬间把图片转换为应用所需要的Icon ...
- 谁能赢呢? BZOJ 2463
题目描述 小明和小红经常玩一个博弈游戏.给定一个n×n的棋盘,一个石头被放在棋盘的左上角.他们轮流移动石头.每一回合,选手只能把石头向上,下,左,右四个方向移动一格,并且要求移动到的格子之前不能被访问 ...
- HDU6299 Balanced Sequence (多校第一场1002) (贪心)
Balanced Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- Qt 学习之路 2(8):添加动作
Home / Qt 学习之路 2 / Qt 学习之路 2(8):添加动作 [在WINDOWS10 QTCREATOR MENU添加无效] Qt 学习之路 2(8):添加动作 豆子 ...
- Python:raw_input 和 input用法
转自:http://blog.csdn.net/kjing/article/details/7450146 Python input和raw_input的区别 使用input和raw_input都可以 ...
- Vue 父页面 值传递 不到 子组件....
...各种百度无果..最后发现 这两个值 都是绑定的一个 ajax....... 坑爹啊..所以注意了....以后的写法.... 比如 data:{ data1: data2: } 假如 data1 ...
- Linux防火墙详解
1.Linux防火墙基础 作为隔离内外网.过滤非法数据的有力屏障,防火墙通常按实现环境的不同分为硬件防火墙和软件防火墙.硬件防火墙是功能专一的硬件设备,具有比较全面的功能,其工作效率较高,但是加个昂贵 ...
- day_11 生成器
. 生成器本身是迭代器 .写迭代器的方式 .生成器函数 .生成器表达式 .各种推导式 .生成器函数 函数内部有yield, yield返回->return yield把函数分段进行 生成器可以使 ...
- Java高级工程师应该掌握的东东
今天偶然看了膜拜单车官网对java程序员的招聘要求,如下,可以对照发现自己的不足 职责 负责APP SERVER中间层等模块开发 完成各类需求开发任务,同时保证服务稳定性.茁壮性 要求 精通Java语 ...
- linux 下结合find 和 rm 删除大量文件
echo "remove only files, the logs folder and it contents will not be removed"find /opt/tra ...