Junit简介
JUnit: JUnit是一个Java语言的单元测试框架。
单元测试:单元测试的目的不是证明你的程序是正确的,而是证明你的程序没有错误
目前流行的版本3.8和4.0
Junit3.X:需要继承于TestCase
Junit4.0:增加了annotation注解
测试方法
@Test
注意:JUnit推荐的做法是以test作为待测试的方法的开头,这样这些方法可以被自动找到并被测试。
断言
@BeforeClass修饰的方法会在所有方法被调用前被执行,而且该方法是静态的,所以当测试类被加载后接着就会运行它, 而且在内存中它只会存在一份实例,它比较适合加载配置文件。
@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接。
@Before和@After会在每个测试方法的前后各执行一次。
Failure一般由单元测试使用的断言方法判断失败所引起的,这经表示 测试点发现了问题 ,就是说程序输出的结果和我们预期的不一样。
error是由代码异常引起的,它可以产生于测试代码本身的错误,也可以是被测试代码中的一个隐藏的bug。
测试用例不是用来证明你是对的,而是用来证明你没有错。
最恐怖的bug是逻辑bug.
最佳实践方式
1.测试方法上必须使用@Test进行修饰
2.测试方法必须使用public void 进行修饰,不能带任何的参数
3.新建一个源代码目录来存放我们的测试代码
4.测试类的包应该和被测试类保持一致
5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
6.测试类使用Test作为类名的后缀(不是必须)
7.测试方法使用test作为方法名的前缀(不是必须)
常用注解
@Test(expected=ArithmeticException.class)
@Ignore(“提示信息”)//所修饰的测试方法会被测试运行器忽略
@Test(timeout=2000)//设置超时时间
@RunWith //可以更改测试运行器 org.junit.runner.Runner
junit4 assert类中的assert方法总结 :
junit中的assert方法全部放在Assert类中,总结一下junit类中assert方法的分类。
1.assertTrue/False([String message,]boolean condition);
判断一个条件是true还是false。
2.fail([String message,]);
失败,可以有消息,也可以没有消息。
3.assertEquals([String message,]Object expected,Object actual);
判断是否相等,可以指定输出错误信息。
第一个参数是期望值,第二个参数是实际的值。
这个方法对各个变量有多种实现。在JDK1.5中基本一样。
但是需要主意的是float和double最后面多一个delta的值,可能是误差范围
4.assertNotNull/Null([String message,]Object obj);
判读一个对象是否非空(非空)。
5.assertSame/NotSame([String message,]Object expected,Object actual);
判断两个对象是否指向同一个对象。看内存地址。
7.failNotSame/failNotEquals(String message, Object expected, Object actual)
当不指向同一个内存地址或者不相等的时候,输出错误信息。
注意信息是必须的,而且这个输出是格式化过的。
一。先编写实体类 MyCaculator.java
package com.entity;
//计算器类
public class MyCaculator {
public int add(int x,int y) ///加法
{
return x+y;
}
public int sub(int x,int y) //减法
{
return x-y;
}
public int multi(int x,int y) //乘法
{
return x*y;
}
public double div(int x,int y) //除法
{
return x/y;
}
}
二。编写测试类 TestMyCaculator.java
package com.entity;
import org.junit.Test;
import junit.framework.Assert;
public class TestMyCaculator {
private static MyCaculator c = new MyCaculator(); // 创建对象
// 测试加法
@Test
public void testAdd() {
int result = c.add(10, 5);
Assert.assertEquals(15, result);
}
// 测试减法
@Test
public void testSub() {
int result = c.sub(10, 5);
Assert.assertEquals(5, result);
}
// 测试乘法
@Test
public void testMulti() {
int result = c.multi(10, 5);
Assert.assertEquals(50, result);
}
// 测试除法
@Test(expected = ArithmeticException.class)
public void testDiv() {
double result = c.div(10, 5); // 算数异常,这里抛出异常了。
// 这个断言执行不到。
Assert.assertEquals(3, result);// 这个断言能通过吗?
}
}
需要导入的jar包:junit-4.10.jar