回到第一章:目录
junit是java语言开源单元测试框架,由Kent Beck和Erich Gamma建立的,在项目中使用junit单元测试,需要引入2个包:
junit-4.12.jar
hamcrest-core-1.3.jar
若不知道如何获取这2个包,可通过百度网盘下载:
链接:https://pan.baidu.com/s/1TfD8dDoF9OZB3Ay1m9iPlw
提取码:i7tr
1、打开idea,新建工程:junit-test
2、新建包:com.my.tools
3、新建类:Computer,代表一个具备基本数据运算的计算器,这个类可作为工具供其他代码使用。代码如下:
package com.my.tools;
public class Computer {
/**加法运算*/
public static double add(double a,double b){
return a+b;
}
/**减法运算*/
public static double minus(double a,double b){
return a-b;
}
/**乘法运算*/
public static double multi(double a,double b){
return a*b;
}
/**除法运算*/
public static double div(double a,double b){
return a/b;
}
/**求幂运算:求a的b次方*/
public static double power(double a,double b){
return Math.pow(a,b);
}
/**开方运算:求a的b次方*/
public static double sqrtX(double a,double b){
return Math.pow(a,1.0/b);
}
/**对数运算:求base为底,value的log*/
public static double log(double value,double base){
return Math.log(value)/Math.log(base);
}
}
1、一般情况下,为测试这个Computer 工具类各个方法的正确性,可以创建一个main函数,然后编写测试代码,通过运行main函数检验结果,比如:
2、当工程比较复杂,通过main函数进行调试的成本就比较高,且一个工程中代码中存在大量的main函数是不可取的。因此需要单元测试框架,来快速、高效的测试某个方法的正确性,且编写完善的单测代码是保证软件质量的必要手段。
3、准备好2个junit单元测试所依赖的jar包:
junit-4.12.jar
hamcrest-core-1.3.jar
4、在工程跟目录,新建一个目录lib,将以上2个jar包复制到lib目录下。
5、在com.my.tools包下面,新建Computer对象的测试类:ComputerTest,代码如下:
package com.my.tools;
import junit.framework.TestCase;
import org.junit.Test;
/**ComputerTest 的测试类,继承至TestCase*/
public class ComputerTest extends TestCase {
/**方法上加 @Test,且方法名以 test开头*/
@Test
public void testAdd(){
//1、正案例
assertEquals(5.0,Computer.add(2,3));
assertEquals(5.0,Computer.add(5,0));
assertEquals(5.0,Computer.add(-1,6));
//2、反案例
assertNotSame(4.0,Computer.add(2,3));
}
@Test
public void testMinus(){
//1、正案例
assertEquals(5.0,Computer.minus(10,5));
assertEquals(5.0,Computer.minus(5,0));
assertEquals(5.0,Computer.minus(-10,-15));
//2、反案例
assertNotSame(4.0,Computer.minus(2,3));
}
@Test
public void testMulti(){
//1、正案例
assertEquals(5.0,Computer.multi(1,5));
assertEquals(0.0,Computer.multi(5,0));
assertEquals(5.0,Computer.multi(-5,-1));
//2、反案例
assertNotSame(4.0,Computer.multi(2,3));
}
@Test
public void testDiv(){
//1、正案例
assertEquals(0.2,Computer.div(1,5));
assertEquals(5.0,Computer.div(10,2));
assertEquals(5.0,Computer.div(-5,-1));
//2、反案例
assertNotSame(4.0,Computer.div(2,3));
assertNotSame(4.0,Computer.div(2,0));
}
@Test
public void testPower(){
//1、正案例
assertEquals(1.0,Computer.power(1,5));
assertEquals(100.0,Computer.power(10,2));
assertEquals(-0.2,Computer.power(-5,-1));
assertEquals(1.0,Computer.power(-5,0));
//2、反案例
assertNotSame(4.0,Computer.power(2,3));
}
@Test
public void testSqrtX(){
//1、正案例
assertEquals(1.0,Computer.sqrtX(1,5));
assertEquals(3.1622776601683795,Computer.sqrtX(10,2));
assertEquals(0.2,Computer.sqrtX(5,-1));
//2、反案例
assertNotSame(4.0,Computer.sqrtX(2,3));
}
@Test
public void testLog(){
//1、正案例
assertEquals(1.0,Computer.log(10,10));
assertEquals(3.3219280948873626,Computer.log(10,2));
//2、反案例
assertNotSame(4.0,Computer.log(2,0));
}
}
6、代码存在报错,引入包的语句无效。这是因为以上2个jar包还没添加到工作路径。
7、点 file - Project Structure , 选 Libraries, 点 + 号,选到 lib目录下的两个jar包,点确定,ComputerTest中的代码就正常无报错了。
1、运行单个方法的测试代码。鼠标点击到 要测试的方法区域,如 testAdd方法,点鼠标右键,Run testAdd(),可以看到左下方 testAdd 打勾,说明testAdd代码里的全部案例都通过了。
2、运行全部单元测试。鼠标点击 ComputerTest ,右键 Run ‘ComputerTest’。可见左下角每个测试方法的执行情况。