下面就开始吧:
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.必须引入类TestCase(importjunit.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.必须引入类TestCase(importjunit.framework.TestCase;
è必须引入类Test(importorg.junit.Test;),必须引入类(importstaticorg.junit.Assert.*;)
2.必须继承类TestCase(classBaseClassTestextendsTestCase)
è不需要
3.测试方法必须以test开头(publicvoidtestMethod ())
è不需要,但是类开始的时候要标记@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。为了实现这个功能,我们将测试类修改如下:
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相关的东西,这里只是简单的入门,希望大家增加补充其他内容。
JUnit4入门与进阶
本文介绍了JUnit4的基本使用方法及与JUnit3的区别,并详细讲解了@Before、@After等注解的应用,帮助读者快速掌握JUnit4的测试技巧。
547

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



