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)是一种概念 ...
随机推荐
- join与os.path.join
Python中有join和os.path.join()两个函数,具体作用如下: join:连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符)连接生成一个新的字符串os.path.joi ...
- Android layout布局属性、标签属性总结大全
RelativeLayout 第一类:属性值为true可false android:layout_centerHrizontal 水平居中 android:layout_centerVe ...
- Python的主要应用领域及应用场景
参考链接:https://www.cnblogs.com/kaid/p/9016673.html 正文: Python简介 Python(英国发音:/ˈpaɪθən/美国发音:/ˈpaɪθɑːn/), ...
- Linux 文件系统的目录结构
http://www.jb51.net/LINUXjishu/151820.htmlLinux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些 ...
- Linux进程控制理论及几种常见进程间通信机制
1. Linux进程控制理论 ① 进程是一个具有一定独立功能的程序的一次运行活动(动态性.并发性.独立性.异步性). 进程的四要素: (1)有一段程序供其执行(不一定是一个进程所专有的),就像一场戏必 ...
- spring boot 系统启动时运行代码(1)-@PostConstruct
Application.java import org.springframework.boot.SpringApplication; import org.springframework.boot. ...
- Problem09 求完数
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数". 分析:例如6=1+2+3. 编程找出1000以内的所有完数. 假如整数n除以m,结果是无余数的整数,那么我们称m就是n ...
- Jquery ValidationEngine 修改验证提示框的位置
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- c语言字符函数
函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source); 程序例: #include <stdi ...
- android 闹钟设置问题
Android开发中,alarmManager在5.0以上系统,启动时间设置无效的问题 做一个app,需要后台保持发送心跳包.由于锁屏后CPU休眠,导致心跳包线程被挂起,所以尝试使用alarmMana ...