看看代码就懂了,里面有详细注释。
AddAndSub.Class
/**
* 我们通常的做法如下:
* 从这个测试方法可以看出,业务代码和测试代码放在一起,对于复杂的业务逻辑,一方面代码量会非常庞大,
* 另一方面测试代码会显得比较凌乱,而JUnit就能改变这样的状况,它提供了更好的方法来进行单元测试。
*
*/
public class AddAndSub {
public int add(int m, int n) {
int num = m + n;
return num;
}
public int sub(int m, int n) {
int num = m - n;
return num;
}
/**
* @param args
*/
public static void main(String[] args) {
AddAndSub addAndsub = new AddAndSub();
if (addAndsub.add(4, 6) == 10) {
System.out.println("Test Ok");
} else {
System.out.println("Test Fail");
}
if (addAndsub.sub(6, 4) == 2) {
System.out.println("Test Ok");
} else {
System.out.println("Test Fail");
}
}
}
TestAddAndSub.Class
import service.AddAndSub;
import junit.framework.TestCase;
/**
* 如果要使用JUnit,则测试类都必须继承TestCase。
* 当然目前的最新版JUnit是不需要继承它的,但并不是说TestCase类就没有用了,
* 它仍然是JUnit工作的基础。这里先讲述继承TestCase类的方式,稍后再介绍不继承的方式。
*
* JUnit的使用非常简单,共有3步:
* 第一步、编写测试类,使其继承TestCase;
* 第二步、编写测试方法,使用test+×××的方式来命名测试方法;
* 第三步、编写断言。如果测试方法有公用的变量等需要初始化和销毁,则可以使用setUp,tearDown方法。
*/
public class TestAddAndSub extends TestCase {
private AddAndSub addAndsub;
@Override
public void setUp()throws Exception{
addAndsub = new AddAndSub();
super.setUp();
}
@Override
protected void tearDown() throws Exception {
addAndsub = null;
super.tearDown();
}
public void testadd() {
// 断言计算结果与10是否相等
assertEquals(10, addAndsub.add(4, 6));
}
public void testsub() {
// 断言计算结果与2是否相等
assertEquals(2, addAndsub.sub(6, 4));
}
public static void main(String args[]) {
junit.textui.TestRunner.run(TestAddAndSub.class);
}
}
TestAddAndSubByAnnotation.Class
import org.junit.Test;
import service.AddAndSub;
import static org.junit.Assert.*;
import org.junit.*;
/**
*Java 5的发布为JUnit带来了新的特性。
*自JUnit 4.0之后,JUnit大量使用了annotations特性,使编写单元测试变得更加简单。
*(1)使用JUnit 4.0以上版本可以不用遵循以前JUnit约定的测试方法命名方法,直接使用注释@Test
*(2)以前,JUnit使用SetUp和TearDown方法来进行初始化和销毁动作,JUnit 4.0以上版本将不再强制使用SetUp和TearDown方法来进行初始化和销毁,
*原来使用SetUp和TearDown方法的,现在可以使用注释@Befor 和@After或者@BeforClass 和@AfterClass
*(3)新版本的JUnit将不再强制继承TestCase,但需要import static org.junit.Assert.*;来实现断言,示例代码如下:
*/
public class TestAddAndSubByAnnotation {
private AddAndSub addAndsub;
//@Befor 和 @After 是针对每个方法都执行的创建和销毁函数
//如果要针对一个类定义其创建和销毁函数,可以使用@BeforClass 和 @AfterClass
@Before
public void init() throws Exception {
addAndsub = new AddAndSub();
}
@After
protected void destory() throws Exception {
addAndsub = null;
}
@Test
public void add() {
assertEquals(10, addAndsub.add(4, 6));
}
@Test
public void sub(){
assertEquals(2, addAndsub.sub(6, 4));
}
}