浏览 8157 次
锁定老帖子 主题:Junit4 快速入门
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-01-24
下面就开始吧: 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相关的东西,这里只是简单的入门,希望大家增加补充其他内容。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-01-25
没法看,
这代码格式 |
|
返回顶楼 | |
发表时间:2008-01-25
可以 介绍点测试技巧,上面的文章 网上一堆堆的.
再说 annotation也是很早的东西了。 |
|
返回顶楼 | |
发表时间:2008-01-25
不错,有收获!
|
|
返回顶楼 | |
发表时间:2008-01-25
以后会注意代码格式,
这个blog刚开始用,有些格式还不是很会用。 |
|
返回顶楼 | |
发表时间:2008-01-25
biqing0427 写道 以后会注意代码格式,
这个blog刚开始用,有些格式还不是很会用。 引用 [方括号code="java"方括号][方括号/code方括号]
把方括号三个字去了 再写代码。。。。 |
|
返回顶楼 | |
发表时间:2008-01-25
biqing0427 写道 assertTrue(baseClass.method ().equals("test.junit.BaseClass")); 应该用assertEquals判等 biqing0427 写道 import static org.junit.Assert.*;//引入Assert.*包 引入的是Assert类的方法 biqing0427 写道 @Before 方法会在 @Test 之前进行,相反 @After 会在所有方法运行完进行。 @After在每个 @Test标注的方法后运行 biqing0427 写道 Thread.sleep(50);//睡50秒 不是50ms吗? static void sleep(long millis) http://www.ibm.com/developerworks/cn/java/j-junit4.html |
|
返回顶楼 | |
发表时间:2008-01-25
devworks: 谢谢
上班的时候写的,没有仔细检查 以后增加注意。 |
|
返回顶楼 | |