Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1608576
  • 博文数量: 585
  • 博客积分: 14610
  • 博客等级: 上将
  • 技术积分: 7402
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-15 10:52
文章存档

2013年(5)

2012年(214)

2011年(56)

2010年(66)

2009年(44)

2008年(200)

分类: Java

2010-11-20 22:02:39


junit4的使用 以及与 junit3的区别,这里默认大家对junit3已经有些理解了。



1.先写个简单的被测试类:

package test.junit;

public class BaseClass {

public String method() {

return this.getClass().getName();

}

}

2.对于这个类的unit测试,我们先看看在junit3中怎么进行测试的吧:

package test.junit;

import junit.framework.TestCase;//引入TestCase类

public class BaseClassTest extends TestCase {//类必须继承TestCase

BaseClass baseClass;

protected void setUp() throws Exception {

super.setUp();

baseClass = new BaseClass();

}

public void testMethod (){//测试方法必须以test开头

//通过assert*来检验

assertTrue(baseClass.method ().equals("test.junit.BaseClass"));

}

}

通过上面这个类,我们对junit3进行一些总结:

1. 必须引入类TestCase(import junit.framework.TestCase;),

2. 必须继承类TestCase (class BaseClassTest extends TestCase)

3. 测试方法必须以test开头(public void testMethod ())

4. 通过assert*方法来判断结果(assertTrue(baseClass.method ().equals("test.junit.BaseClass"));)。

3. 下面来了解一下junit4里面的内部关系吧,从这个图中你可以看出junit4的主要功能:




下面来看看我们今天的主角junit4是怎么处理这些的吧:

package test.junit;

import org.junit.Test;//引入Test类

import static org.junit.Assert.*;//引入Assert.*包

public class BaseClassTestNew {//这里不用再继承TestCase类了。

BaseClass baseClass = new BaseClass();

@Test public void methodOne(){//名字随便写,可以按你自己的爱好。但是必须以@Test开头

//还是以assert*来判断

assertTrue(baseClass.methodOne().equals("test.junit.BaseClass"));

}

}

看看多么的简洁,好像少了很多约束,下面通过和junit3的特性进行比较总结junit4的特性:

1.必须引入类TestCase(import junit.framework.TestCase;

è必须引入类Test(import org.junit.Test;),必须引入类(import static org.junit.Assert.*;)

2.必须继承类TestCase (class BaseClassTest extends TestCase)

è不需要

3.测试方法必须以test开头(public void testMethod ())

è不需要,但是类开始的时候要标记 @Test

4.通过assert*方法来判断结果(assertTrue(baseClass.method ().equals("test.junit.BaseClass"));)。

从上面的对比,可以看出junit4与junit3的区别在于:

去掉与类TestCase的偶联性,唯一触发TestCase的地方就是在@Test上。

4.以上就是junit4与junit3的区别与改进,下面再继续看看junit4有哪些新增加的功能吧:


1. @Before 和 @After

类似于init() 和destory(),可以将一些初始化和释放工作放到这里面,每个类都只有一个@Before 和 @After。为了实现这个功能,我们将测试类修改如下:

import org.junit.Test;

//新增加两个类

import org.junit.Before;

import org.junit.After;

import static org.junit.Assert.*;

public class BaseClassTestNew {

BaseClass baseClass ; //这里不用进行初始化

@Before public void runBeforeTest(){

baseClass = new BaseClass();

}

@Test public void method (){

assertTrue(baseClass.method ().equals("test.junit.BaseClass"));

}

@After public void runAfterTest(){

baseClass.teardownList();

baseClass = null;

}

}

@Before 方法会在 @Test 之前进行,相反 @After 会在所有方法运行完进行。

Junit4同时还支持 @BeforeClass 和 @AfterClass,原理一样,大家可以参考相关资料。


2.TimeOut 属性

Junit4支持timeout,运用如下:

a. 首先在被测试类中增加用于测试timeout的方法:

public void methodTimeOut() {

try {

Thread.sleep(50);//睡50秒

System.out.println("methodTimeOut");

} catch (InterruptedException e) {

}

}

b.看看怎么测试这个方法:

@Test(timeout=5)

public void methodTimeOut(){

baseClass.methodTimeOut();

}

1. 增加(timeout=5)这个设置项

2. 运行完 没有输出methodTimeOut,说明这个方法没有执行完,达到效果。

以上就是一部分junit4相关的东西,这里只是简单的入门,希望大家增加补充其他内容。
阅读(1177) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~