上下载最新的junit包。
2 建立名为JunitTest的Java Project,把下载的junit-4.12.jar添加到工程中
3 建立com.abc的package,在该package下建立Calculator.Java,用来实现加减乘除运算。
- package com.abc;
- public class Calculator {
- public int add(int a,int b) {
- return a + b;
- }
- public int minus(int a,int b) {
- return a - 1; //故意写错,方便测试
- }
- public int divide(int a,int b) {
- return a / b;
- }
- public int mul(int a,int b) {
- return a * b;
- }
- }
4 创建测试类
(1)右键点击要测试的类Calculator.java,“New”,“JUnit Test Case”
(2)这里有四个方法可选
setUpBeforeClass()和setUp()是用于测试之前的准备工作。区别在于setUpBeforeClass()是针对整个类的,只执行一次;setUp()是针对方法的,每个测试方法被执行之前都会先执行setUp()。
tearDownAfterClass()和tearDown()是用于测试之后释放资源的。区别在于tearDownAfterClass()是针对整个类的,只执行一次;tearDown()是针对方法的,每个测试方法被执行后都会执行tearDown()。
这里勾选setUpBeforClass()。
(3)这里可以选择要测试的方法。把四个运算方法都选上。
(4)点击finish后生成的代码如下图所示
(5)编写测试类代码
- package com.abc;
- import static org.junit.Assert.*;
- import org.junit.Before;
- import org.junit.Test;
- public class CalculatorTest {
- Calculator cal;
- @Before
- public void setUp()throws Exception{
- cal = new Calculator();
- }
- @Test
- public void testAdd() {
- int res = cal.add(20, 10);
- assertEquals("加法错误",res, 30);
- }
- @Test
- public void testMinus() {
- int res = cal.minus(20, 10);
- assertEquals("减法错误",res, 10);
- }
- @Test
- public void testDivide() {
- int res = cal.divide(20, 10);
- assertEquals("除法错误",res, 2);
- res =cal.divide(20, 0);
- }
- @Test
- public void testMul() {
- int res = cal.mul(20, 10);
- assertEquals("乘法错误",res, 200);
- }
- }
5 开始测试
右键点击CalculatorTest,“Run As”,“JUnitTest”,报initializationError的错误
这个错误是因为少了junit-4.12.jar的两个依赖包:hamcrest-core-1.3.rc2.jar和hamcrest-library-1.3.rc2.jar。
从网络上下载这两个包并添加到工程中:
重新进行单元测试,结果如下:
上述结果显示了两个方法是正确的,一个方法是计算结果错误,另一个方法是编译错误。
点击testMinus,可以查看错误信息为计算结果应该为10却计算成了19。
点击testDivide,可以看到错误信息为除数不能为0。