Junit简单例子
本例是加减乘除计算
先看一个简单的类Calculator.java:
1
package
com.test.junit;
2
/** */
/**
3
*
4
* 数学计算
5
*
6
*/
7
public
class
Calculator
{
8
public int add(int a,int b)
{
9
return a + b;
10
}
11
public int minus(int a,int b)
{
12
return a - b;
13
}
14
public int multiply(int a, int b )
{
15
return a * b;
16
}
17
public int divide(int a , int b )throws Exception
18
{
19
if(0 == b)
{
20
throw new Exception("除数不能为零");
21
}
22
return a / b;
23
}
24
/**//*
25
* 一下是不用IDE给我们提供的Junit,用Junit本身去测试的3个方法。
26
public static void main (String[]args){
27
junit.textui.TestRunner.run(CalculatorTest.class);
28
junit.swingui.TestRunner.run(CalculatorTest.class);
29
junit.awtui.TestRunner.run(CalculatorTest.class);
30
}
31
*/
32
}
package
com.test.junit;2

/** */
/**3
* 4
* 数学计算5
*6
*/
7

public
class
Calculator
{8

public int add(int a,int b)
{9
return a + b;10
}11

public int minus(int a,int b)
{12
return a - b;13
}14

public int multiply(int a, int b )
{15
return a * b;16
}17
public int divide(int a , int b )throws Exception18

{19

if(0 == b)
{20
throw new Exception("除数不能为零");21
}22
return a / b;23
}24

/**//* 25
* 一下是不用IDE给我们提供的Junit,用Junit本身去测试的3个方法。26
public static void main (String[]args){27
junit.textui.TestRunner.run(CalculatorTest.class);28
junit.swingui.TestRunner.run(CalculatorTest.class);29
junit.awtui.TestRunner.run(CalculatorTest.class);30
}31
*/32
}
下面我们看看传统的JUnit的TestCase:
CalculatorTest.java:
1
package
com.test.junit;
2
3
import
junit.framework.Assert;
4
import
junit.framework.TestCase;
5
/** */
/**
6
* Keep the bar green to keep the code clean
7
*
8
*在Junit3.8中必须继承TestCase类
9
*
10
*单元测试不是证明您是对的,而是证明您没有错
11
*/
12
public
class
CalculatorTest
extends
TestCase
{
13
/** *//**
14
* 在Junit3.8中,测试方法满足如下原则
15
* 1)public
16
* 2)void
17
* 3)无方法参数
18
* 4)最重要的方法名称必须以test开头
19
*/
20
private Calculator cal;
21
22
//在执行每个test之前,都执行setUp;
23
public void setUp()
{
24
cal = new Calculator();
25
}
26
27
//在执行每个test之后,都要执行tearDown
28
public void tearDown()
{
29
}
30
31
public void testAdd()
32
{
33
// Calculator cal = new Calculator();
34
int result = cal.add(1, 2);
35
//断言assert
36
Assert.assertEquals(3, result);
37
}
38
39
public void testMinus()
40
{
41
// Calculator cal = new Calculator();
42
int result = cal.minus(5, 2);
43
Assert.assertEquals(3, result);
44
}
45
46
public void testMultiply()
47
{
48
Calculator cal = new Calculator();
49
int result = cal.multiply(4, 2);
50
Assert.assertEquals(8,result);
51
}
52
53
public void testDivide()
54
{
55
// Calculator cal = new Calculator();
56
int result = 0;
57
try
{
58
result = cal.divide(10,5);
59
} catch (Exception e)
{
60
e.printStackTrace();
61
//我们期望result = cal.divide(10,5);正常执行;如果进入到catch中说明失败;
62
//所以我们加上fail。
63
Assert.fail();//如果这行没有执行。说明这部分正确。
64
}
65
Assert.assertEquals(2,result);
66
}
67
68
public void testDivide2()
69
{
70
Throwable tx = null;
71
try
72
{
73
// Calculator cal = new Calculator();
74
cal.divide(10,0);
75
//正常来讲cal.divide(10,0);已经抛出异常,之后的代码不会被执行。
76
//我们也期望是这样的。所以说如果下面的Assert.fail();执行了。
77
//我的的测试就失败了。
78
Assert.fail();//当执行到这里测试失败,后面的代码将不被执行。
79
} catch (Exception e)
{
80
tx = e;
81
}
82
Assert.assertNotNull(tx);//断言tx不为空。也就是说肯定有异常。
83
Assert.assertEquals(Exception.class,tx.getClass());//断言tx的类型为Exception类型
84
Assert.assertEquals("除数不能为零", tx.getMessage());
85
}
86
}
package
com.test.junit;2

3
import
junit.framework.Assert;4
import
junit.framework.TestCase;5

/** */
/**6
* Keep the bar green to keep the code clean7
* 8
*在Junit3.8中必须继承TestCase类9
*10
*单元测试不是证明您是对的,而是证明您没有错11
*/
12

public
class
CalculatorTest
extends
TestCase
{13

/** *//**14
* 在Junit3.8中,测试方法满足如下原则15
* 1)public16
* 2)void 17
* 3)无方法参数18
* 4)最重要的方法名称必须以test开头19
*/20
private Calculator cal;21
22
//在执行每个test之前,都执行setUp;23

public void setUp()
{24
cal = new Calculator();25
}26
27
//在执行每个test之后,都要执行tearDown28

public void tearDown()
{29
}30

31
public void testAdd()32

{33
// Calculator cal = new Calculator();34
int result = cal.add(1, 2);35
//断言assert36
Assert.assertEquals(3, result);37
} 38
39
public void testMinus()40

{41
// Calculator cal = new Calculator();42
int result = cal.minus(5, 2);43
Assert.assertEquals(3, result);44
}45
46
public void testMultiply()47

{48
Calculator cal = new Calculator();49
int result = cal.multiply(4, 2);50
Assert.assertEquals(8,result);51
}52
53
public void testDivide()54

{55
// Calculator cal = new Calculator();56
int result = 0;57

try
{58
result = cal.divide(10,5);59

} catch (Exception e)
{60
e.printStackTrace();61
//我们期望result = cal.divide(10,5);正常执行;如果进入到catch中说明失败;62
//所以我们加上fail。63
Assert.fail();//如果这行没有执行。说明这部分正确。64
}65
Assert.assertEquals(2,result);66
}67
68
public void testDivide2()69

{70
Throwable tx = null; 71
try 72

{73
// Calculator cal = new Calculator();74
cal.divide(10,0);75
//正常来讲cal.divide(10,0);已经抛出异常,之后的代码不会被执行。76
//我们也期望是这样的。所以说如果下面的Assert.fail();执行了。77
//我的的测试就失败了。78
Assert.fail();//当执行到这里测试失败,后面的代码将不被执行。79

} catch (Exception e)
{80
tx = e;81
}82
Assert.assertNotNull(tx);//断言tx不为空。也就是说肯定有异常。83
Assert.assertEquals(Exception.class,tx.getClass());//断言tx的类型为Exception类型84
Assert.assertEquals("除数不能为零", tx.getMessage());85
}86
}
本例中只有一个测试类。不过在开发过程中随着项目的壮大,测试类也会越来越多。我们总不能每次测试都去挨个的执行每个test类吧。所以我们要写个总体的test类:
代码如下:
1
package
com.test.junit;
2
3
import
junit.framework.Test;
4
import
junit.framework.TestCase;
5
import
junit.framework.TestSuite;
6
7
public
class
TestAll
extends
TestCase
{
8
public static Test suite()
9
{
10
TestSuite suite = new TestSuite();
11
suite.addTestSuite(CalculatorTest.class);//加入你所想测试的测试类
12
13
return suite;
14
}
15
}
package
com.test.junit;2

3
import
junit.framework.Test;4
import
junit.framework.TestCase;5
import
junit.framework.TestSuite;6

7

public
class
TestAll
extends
TestCase
{8
public static Test suite()9

{10
TestSuite suite = new TestSuite();11
suite.addTestSuite(CalculatorTest.class);//加入你所想测试的测试类12
13
return suite;14
}15
}
本文介绍了一个简单的计算器类Calculator,并通过JUnit进行单元测试的方法。详细展示了如何编写测试用例验证加减乘除等基本运算的正确性,同时演示了如何处理除数为零的异常情况。

1669

被折叠的 条评论
为什么被折叠?



