什么是单元测试?
写了个类,要给别人用,会不会有Bug?怎么办?测试
用main方法测试好不好?不好
1.不能一起运行
2.大多数情况下需要人为的观察输出是否正确
为什么要进行单元测试?
重用测试,应付将来的实现的变化
提高士气,明确知道我的东西是没问题的
JUnit4 HelloWorld
1.new Project
2.建立类
public class T {
public int add(int x , int y){
return x + y;
}
}
3.建立testCase
创建一个新的Junit 4 Test Case,选择junit4,选择要测试的类,next
勾上要测试的方法,点finish
会提示是否要导入junit4的jar包,如果想使用MyEclipse自带的,点ok即可
之后会生成如下代码:
import static org.junit.Assert.*;
import org.junit.Test;
public class TTest {
@Test
public final void testAdd() {
fail("Not yet implemented"); // TODO
}
}
静态导入了Assert类的所有静态断言方法,fail()只是其中一种
修改下自动生成的testAdd()方法:
@Test
public final void testAdd() {
int z = new T().add(3, 5);
assertEquals(8, z);
}
assertEquals(期望得到的值,实际的值),此时我们希望测试T类的add()方法, 3 + 5 是否等于8
之后,右键,Run as ,JUnit Test运行测试
左边的小窗口为JUnit,会看到一个绿色的“条”,则表示测试通过,这个方法没问题
现在我们修改testAdd()方法:
此时,z不等于9,左边的“条”就变成红色,表示不通过
还可以写多个断言一起进行测试,其中每个断言方法,
都重载了一个(String message) 代表如果出错了,会提示什么消息
@Test
public final void testAdd() {
int z = new T().add(3, 5);
assertEquals(8, z);
assertTrue("z大于8", z > 8 );
}
----------------------------------------
一种新的测试方法:assertThat()
使用它时,需要下载jar包:hamcrest-all-1.3.0RC2.jar
如果用MyEclipse自带的JUnit4的jar包,会产生冲突,
测试时,会报一个Security的异常,ClassLoader() 原因是加载类的加载器不同
所以单独下载JUnit4的jar包并导入: junit-4.10.jar
@Test
public final void testAdd() {
int z = new T().add(3, 5);
assertEquals(8, z);
assertTrue("z大于8", z >= 8 );
assertThat(z, is(8)); //测试这个对象是否等于8
assertThat(z, allOf(greaterThan(5),lessThan(10))); //判断z 大于5并且小于10
}
具体方法信息查看API http://www.jmock.org/javadoc/2.3.0/org/hamcrest/Matchers.html
---------------------------------------------
Failure 和 Error区别:Failure是测试失败,Error是指程序本身出错
比如调用 assertTrue("z大于8", z >= 8 ) 方法,如果不是 z>=8 时,会显示Failure
如果 在testAdd() 方法内,写 int i = 1/0; 此时会显示Error
执行多个测试方法:
自定义测试方法:@Test
public void testDivide(){}
执行JUnit Test时,会一起测试这个类中所有方法
@Test的属性:
@Test(expected=java.lang.ArithmeticException.class) //希望他抛出异常
public void testDevide(){
int z = new T().devide(3, 0); //除数为0
assertThat(z, is(0));
}
此时测试会通过
@Test(timeout = 100) //在100毫秒内运行结束这个方法
用来测试一些算法等,如果100毫秒内完成了这个方法的执行,则通过
@Ignore:被忽略的测试方法,在方法前写上它,执行测试时,标志这个方法不被测试
@Before:每一个测试方法之前运行
@After:每一个测试方法之后运行
----------------------------------
@BeforeClass:所有测试开始之前运行
@AfterClass:所有测试结束之后运行
@BeforeClass 和 @AfterClass必须为static:
类初始化之前就已经执行了,他们的作用:配置环境,打开连接,关闭、释放连接等
分享到:
相关推荐
JUnit4入门教程
Junit4入门使用介绍,作为入门的一个好材料。帮助快速进入Junit世界。
junit4 快速入门 比较简单易学,欢迎前来学习
NULL 博文链接:https://cyhcheng.iteye.com/blog/462966
Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验Junit入门实验
jUnit4入门好帮手,有详细介绍和完整的代码示例
针对Calculate类 (含加减乘除4个方法),使用junit4进行简单的单元测试例子,含注释~
我以前写的一个junit入门的培训ppt,传了大家参考一下
Junit入门练习代码。
Junit实例图解,描述Junit安装环境,实用例子
很简单的说明,这是好的一个开始,希望大家能够看到,学习测试是很重要的。
java开发必备技能Junit 单元测试,适合新手的入门教程!
JUnit入门,Junit入门学习,Junit初学者!
Junit使用入门培训(初级篇)1
• JUnit 是一个开放的资源框架,用于编写和运行测试。 • 提供注释来识别测试方法。 • 提供断言来测试预期结果。 • 提供测试运行来运行测试。 • JUnit 测试允许你编写代码更快,并能提高质量。 • JUnit 优雅...
JUnit API和入门手册 chm
JUnit与Ant入门 JUnit版本是3.8.1 Ant版本是1.6.1 觉得用来入门还是可以的
使用spring 和junit的一个小案例,用来了解如何使用spring和junit4。入门级
学习时候从网络上整理的juint资料,非常基础.
此文件包含源代码(简单加减乘除),测试源码(junit4框架下的单元测试源码),入门级学习材料。Eclipse开发环境下