一、环境搭建:

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 学习笔记的更多相关文章

  1. Junit4学习笔记

    一.初始化标注 在老Junit4提供了setUp()和tearDown(),在每个测试函数调用之前/后都会调用. @Before: Method annotated with @Before exec ...

  2. Junit4学习笔记--方法的执行顺序

    package com.lt.Demo.TestDemo; import java.util.Arrays; import java.util.Collection; import org.junit ...

  3. ActiveMQ学习笔记(5)——使用Spring JMS收发消息

      摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...

  4. mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

  5. Hibernate 马士兵 学习笔记 (转)

    目录(?)[+] 第2课 Hibernate UML图 第3课 风格 第4课 资源 第5课 环境准备 第6课 第一个示例Hibernate HelloWorld 第7课 建立Annotation版本的 ...

  6. Spring Boot学习笔记2——基本使用之最佳实践[z]

    前言 在上一篇文章Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用已经对Spring Boot的基本体系与基本使用进行了学习,本文主要目的是更加进一步的来说明对于Spring B ...

  7. Spring学习笔记(六)—— SSH整合

    一.整合原理 二.整合步骤 2.1 导包 [hibernate] hibernate/lib/required hibernate/lib/jpa 数据库驱动 [struts2] struts-bla ...

  8. #Spring实战第二章学习笔记————装配Bean

    Spring实战第二章学习笔记----装配Bean 创建应用对象之间协作关系的行为通常称为装配(wiring).这也是依赖注入(DI)的本质. Spring配置的可选方案 当描述bean如何被装配时, ...

  9. SSM框架学习笔记_第1章_SpringIOC概述

    第1章 SpringIOC概述 Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架. 1.1 控制反转IOC IOC(inversion of controller)是一种概念 ...

随机推荐

  1. windows mysql导入sql文件

    当需要的sql文件很大时(>200M)怎么办?答:修改my.ini文件,max_allowed_packet的值可以设置为1024M 进入mysql.exe目录下,执行如下命令: mysql - ...

  2. 将优狐智能插座接入 Domoticz

    前言 前几天在某淘宝优惠中看到一个 WiFi 智能插座卖 29 块包邮,心想要是里面是 ESP8266 模块说不定可以刷上固件玩玩,就买了俩回来,记下折腾过程. 拆解 WiFi 智能插座的淘宝介绍页 ...

  3. Python条件与循环

    1.条件语句: 形式: if 判断语句 : 执行语句1elif 判断语句2: 执行语句2elif 判断语句3: 执行语句3#...else: 执行语句4    占位符 pass 2.循环语句 1.wh ...

  4. IP 地址分类

    1.1 网络IP地址分类 网络通讯过程中数据封装与解封过程(网际互联通讯过程) TCP/IP模型 1)应用层 总结记录一些常见网络协议以及对应的端口号(FTP HTTP telnet) 2)主机到主机 ...

  5. Juniper SRX550防火墙web页面CPU达到100%的故障解决办法

    Juniper SRX550防火墙web页面CPU达到100%的故障解决办法 利用telnet远程连接主机,对web页面注销重新登录即可,在配置中输入命令:run restart web-manage ...

  6. Windows Server2008服务器可以远程桌面,但在内网中却Ping不通--解决方法

    Windows Server2008服务器可以通过远程桌面登录,但在内网中却Ping不通.所以要考虑的是防火墙是不是做了限制. 最简单粗暴的方法是直接把防火墙给关掉 还有个其他的方法是参考别人写的,我 ...

  7. python__画图表可参考(转自:寒小阳 逻辑回归应用之Kaggle泰坦尼克之灾)

    出处:http://blog.csdn.net/han_xiaoyang/article/details/49797143 2.背景 2.1 关于Kaggle 我是Kaggle地址,翻我牌子 亲,逼格 ...

  8. import与export

    expoer default 输出的是一个对象 export 输出的是对象的一个元素

  9. XAMPP 更换其它路径

    打开安装路径: xampp\apache\conf\httpd.conf DocumentRoot “C:/xampp/htdocs” <Directory “C:/xampp/htdocs”& ...

  10. Android 5.0以上heads up通知

    适用Android系统: 1) Android版本>= 5.0 2) 部分ROM是不支持 RemoteViews view=getRemoteViews(body,title, R.mipmap ...