Eclipse中JUnit单元测试入门 (1)

JUnit4入门与进阶
本文介绍了JUnit4的基本使用方法及与JUnit3的区别,并详细讲解了@Before、@After等注解的应用,帮助读者快速掌握JUnit4的测试技巧。
Junit概念,原理这里就不说了,有兴趣的朋友可以查阅相关资料,这篇文章主要是为了快速给大家介绍一下junit4的使用以及与junit3的区别,这里默认大家对junit3已经有些理解了。

下面就开始吧:

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

packagetest.junit;

publicclassBaseClass {

publicStringmethod() {

returnthis.getClass().getName();

}

}

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

packagetest.junit;

importjunit.framework.TestCase;//引入TestCase

publicclassBaseClassTestextendsTestCase {//类必须继承TestCase

BaseClassbaseClass;

protectedvoidsetUp()throwsException {

super.setUp();

baseClass=newBaseClass();

}

publicvoidtestMethod (){//测试方法必须以test开头

//通过assert*来检验

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

}

}

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

1.必须引入类TestCaseimportjunit.framework.TestCase;),

2.必须继承类TestCase(classBaseClassTestextendsTestCase)

3.测试方法必须以test开头(publicvoidtestMethod ()

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

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


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

packagetest.junit;

importorg.junit.Test;//引入Test

importstaticorg.junit.Assert.*;//引入Assert.*

publicclassBaseClassTestNew {//这里不用再继承TestCase类了。

BaseClassbaseClass = new BaseClass();

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

//还是以assert*来判断

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

}

}

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

1.必须引入类TestCaseimportjunit.framework.TestCase;

è必须引入类Testimportorg.junit.Test;,必须引入类(importstaticorg.junit.Assert.*;

2.必须继承类TestCase(classBaseClassTestextendsTestCase)

è不需要

3.测试方法必须以test开头(publicvoidtestMethod ()

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

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

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

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

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

1.@Before@After

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

importorg.junit.Test;

//新增加两个类

importorg.junit.Before;

importorg.junit.After;

importstaticorg.junit.Assert.*;

publicclassBaseClassTestNew {

BaseClassbaseClass;//这里不用进行初始化

@BeforepublicvoidrunBeforeTest(){

baseClass =newBaseClass();

}

@Testpublicvoidmethod (){

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

}

@AfterpublicvoidrunAfterTest(){

baseClass.teardownList();

baseClass =null;

}

}

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

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

2.TimeOut属性

Junit4支持timeout,运用如下:

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

publicvoidmethodTimeOut() {

try{

Thread.sleep(50);//50

System.out.println("methodTimeOut");

}catch(InterruptedException e) {

}

}

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

@Test(timeout=5)

publicvoidmethodTimeOut(){

baseClass.methodTimeOut();

}

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

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

以上就是一部分junit4相关的东西,这里只是简单的入门,希望大家增加补充其他内容。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值