赞
踩
测试可以分为两类:一类是黑盒测试,一类是白盒测试。
而Junit属于白盒测试
步骤:
定义一个测试类
建议:
定义测试方法:可以独立运行
建议:
给方法加 @Test
导入Junit依赖环境
判定结果:
我们一般使用Assert类下的静态方法assertEquals(expected, actual)去处理我们的期望结果和输出结果
Assert.assertEquals(3, result);
两个参数分别是:期望值 程序结果值
为什么要使用Assert.assertEquals(expected, actual)去处理测试结果呢?
因为我们规定红色代表失败,绿色代表正确。当我们使用一个测试方法去测试一个计算机的加法方法时,最后只是输出这个结果(假如没有异常的发生)。如果我们输入1和3,我们期望得到结果4,但是我们输出的是2,我们期望得到的是4,这个时候得到的结果不符合我们的预期,但是运行结果仍然是绿色的(代表正确),是不是就不太正确,这个时候我们可以在最后使用Assert的assertEquals方法比较预期值和程序输出的结果值,如果相等,就会使绿色的,不相等就是红色的。这个时候是不是就符合我们对绿色和红色的定义了。
package cn.itcast.test;
import cn.itcast.junit.Calculator;
import org.junit.Assert;
import org.junit.Test;
public class CalculatorTest {
/**
* 测试add方法
*/
@Test
public void testAdd(){
Calculator c = new Calculator();
int a = 1, b = 2;
int result = c.add(1, 2);
Assert.assertEquals(3, result);
}
/**
* 测试sub方法
*/
@Test
public void testSub(){
Calculator c = new Calculator();
int a = 1, b = 2;
int result = c.sub(1, 2);
Assert.assertEquals(-1, 2);
}
}
使用测试类的好处:
下面是摘自知乎的一段话
我们在写程序的过程中,免不了要对一段代码进行测试。这个时候比较懒的做法就是新建一个类(一个类只能有一个主方法,程序运行的入口),让这段代码在这个类的主方法中运行,但是测试完之后还得删除,比较麻烦。但是测试类呢,可以定义多种方法,每一个方法都可以看做是程序的入口,这样一个测试类就可以有多个独立运行的”主方法“了,虽然并不是真正的主方法,但是可以这样来用。每个测试类有多个可以运行的main方法了,每个测试方法都可以单独运行,具体运行哪个方法由自己来指定,方便测试且整洁。
两个注解
在一个测试方法之前加上@Before它就成为了初始化方法,在所有测试方法执行之前都会自动先执行该方法,一般用于资源的申请
在一个测试方法之前加上@After它就成为了释放资源方法,在所有测试方法执行之后都会自动执行该方法。
被@Before修饰的方法会在测试方法执行之前先被执行
被@After修饰的方法会在测试方法执行之后被执行
被@Before或被@After修饰的方法无论测试方法是否出一场都会执行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。