Junit4测试框架的使用(一)
????? Junit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。利用Junit进行的程序员测试,也就是所谓的“白盒测试”,因为程序员不但知道被测试的软件或者代码实现什么功能,还知道是怎么实现这些功能的。
???? 今天我们介绍的是Junit4测试框架,跟Junit3以及以前的测试框架不同,3.x以及以前的Junit测试框架是在做测试用例的时候,必须继承TestCase类,而Junit4利用annotations即注释的来编写自己的测试用例。
???? 下面我们解释一下,Junit4中常用的annotations:
????? @BeforeClass: 在整个测试用例实例化前执行一些初始化工作。
????? @AfterClass: 在整个测试用例执行完以后执行一些释放资源之类的工作。
????? @Before:在每个测试方法之前执行一次。
????? @After:在每个测试方法执行完之后执行一次。
????? @Test: 测试方法。
???????????? Test中有两个参数,一个是Timeout,设置方法在一定时间内执行完毕,否则返回错误。另一个是excepted,用于检测测试方法是否抛出异常。
????? @Ignore: 注释掉一个测试方法或者测试类,在执行测试的时候,不执行这个方法或者测试类。
????? @RunWith: 指定执行测试的Runner,如果没有此注释,使用的默认Runner。
????? @Paramters:在参数化测试中,返回参数化列表。
????? 1 Junit4使用
??????? 1) 下面我们就看一下Junit4在MyEclipse中的使用。首先,我们做一个用来测试的目标类。
?
/** * 计算器类 * @author * */public class Calculator {/** * 计算结果 */ private static int result = 0; /** * 加法计算 * @param num */ public void add(int num1, int num2) { result = num1 + num2; } /** * 减法计算 * @param num */ public void subtract(int num1, int num2) { result = num1 - num2; } /** * 乘法计算 * @param num1 乘数1 * @param num2 乘数2 */ public void multi(int num1, int num2) { result = num1 * num2; } /** * 除法计算 * @param num1 除数 * @param num2 被除数 */ public void div(int num1, int num2) { result = num1 / num2; } /** * 结果清零 */ public void clear() { result = 0; } /** * 无限循环,测试需要 */ public void cicle() { for (;;){ ; } } /** * 获取结果 * @return 结果 */ public int getResult() { return result; }}
?????????? 2)给工程添加Junit4的jar包,在工程上点击右键,点击“Build” --> "Add Libraries...",如下图所示:
?
???????????? 点击之后出现如下对话框:
?
?
???????????? 选择Junit之后,点击Next,然后会出现如下对话框:
??????????????
?
??????????????? 选择Junit4之后,点击Finish后,Junit4所需要的包就已经加入到工程里面来了,可以在工程中确认一下。
?
??????? 3)编写测试类。
?????????????
import static org.junit.Assert.*;import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;public class CalculatorTest { private static Calculator calculator = new Calculator(); @BeforeClasspublic static void setUpBeforeClass() throws Exception {}@AfterClasspublic static void tearDownAfterClass() throws Exception {}@Beforepublic void setUp() throws Exception {calculator.clear();}@Afterpublic void tearDown() throws Exception {calculator.clear();}@Testpublic void testAdd() {calculator.add(5, 6);assertEquals(11, calculator.getResult());}@Testpublic void testMulti() {calculator.add(5, 6);assertEquals(30, calculator.getResult());}}
?
??? 在这个测试类中,我们只测试了add()方法和mutil()方法用作示范。这里注意,test方法的名称受限制,但是必须是public void。
??? BeforeClass和AfterClass必须是public static void,因为一个是在实例初始化之前执行,另一个是在实例实例销毁后执行。
?? assertEquals是断言,在Junit中有许多断言,用来检测测试方法执行的结果与期望结果是否相符。
?? 然后点击鼠标右键,选择“Run as” --> "Junit Test"即可进行测试。
?????????
?