最近复习java基础以及流行框架,偶然看到教hibernate视频作者使用junit作为hibernate的验证平台,那种感觉让我找到沉寂了好长时间的编程快感,于是顺带着先把jUnit学习了下。
介绍下jUnit,java平台之所以到今天依然如此流行,很大程度上得益于其开源的态度,struts,hibernate,spring,
Apache common library,log4j,jUnit....举不胜举啊,最关键的是这些开源的框架、程序不仅使我们的编程效率大大的提高,更因为他们是编程大师们写的,其稳定性和运行效率也是杠杠滴。junit就是由Erich Gamma 和Kent Beck 两个大师级人物写的,这两个人我想就不用我多说了,Erich Gamma是GoF成员,GoF四个人写的《design patterns》可是很多很多优秀的程序员都要顶礼膜拜的,另一个Kent Beck是极限编程(XP)的发起人,也同样了不得哦。XP的原则之一------测试驱动开发(TDD),所使用的呢就是xUnit了,而jUnit基本就是其中的老大。
好了,现在说下jUnit的使用方法
最好有个eclipse,因为eclipse集成的jUnit用起来非常的舒心
jUnit3.*使用起来相当简单,只需新建一个类继承junit.framework.TestCase即可,TestCase里提供了很多实用的断言方法,测试方法约定以test开头后接要测试的方法,此method无参数无返回值,类名则最好是要测试的类名加Test后缀,比如要测试org.shun.UserManager类下的addUser(User)方法,可以写个UserManagerTest extends TestCase,然后写个测试方法testAddUser()即可
而4.*版本因为利用了J2SE 5.0提供的元数据注释特性,使得测试类可以不用继承TestCase
,只需把@Test加到相应的测试方法即可,因为没有继承TestCase,测试类本身没有了断言方法,怎么办呢?这要利用J2SE的另外一个特性,静态方法导入
可以这样import static org.junit.Assert.*;这样,那些断言方法就可以直接使用了
// jUnit 3.*版本
package org.shun.test;
import org.shun.UserManager;
import junit.framework.TestCase;
public class UserManagerTest extends TestCase {
public void setUp() throws Exception {
// TODO 这里提供供测试方法使用的全局变量初始化
}
public void tearDown() throws Exception {
// TODO 这里提供全局变量的垃圾回收
}
public void testAddUser() {
// TODO
}
}
// jUnit 4.*版本
package org.shun.test;
import org.shun.UserManager;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.After;
import org.junit.BeforeClass;
import org.junit.AfterClass;
import org.junit.Test;
public class UserManagerTest extends TestCase {
@Before
public void setUp() throws Exception {
// TODO 全局变量初始化,会为每个测试方法初始化一次
}
@After
public void tearDown() throws Exception {
// TODO 这里提供全局变量的垃圾回收,会为每个测试方法回收一次
}
@BeforeClass
public static void initClass throws Exception {
// TODO 全局变量初始化,只初始化一次
}
@AfterClass
public static void disposeClass throws Exception {
// TODO 全局变量回收,只回收一次
}
@Test
public void testAddUser() {
// TODO 测试方法
}
}
大家不妨想想,如果测试自己写的一个类,怎么测试,写个测试方法,在main方法里初始化,然后运行测试方法或者直接就在main方法里写测试,有的人说这样也挺好呀,方便,还不引入第三方的库增加学习的复杂性,这里就说下junit提供的方便,看到上面代码没,首先人家提供了setup,teardown两个初始化和垃圾回收的方法,然后,里面写的每一个方法,都可以以junit方式运行,反应到eclipse里就是
这是运行测试类,这样里面的所有测试方法都会运行
当然你也可以选中某个测试方法来运行junit test,这样只会运行选中的测试方法,怎么样啊,就这一点使用它就理由充分了吧,最最重要的是人家提供了只有你想不到没有人家做不到的断言方法,哈哈
我这里只是简单介绍了junit的基础,另外像异常测试啦,设置timeout啦,以及派生自junit或者与junit无缝集成的其他工具啦都没有介绍,建议大家下载junit后自己去学习文档,或者来给我要视频教程,我非常乐意
最近学习的感悟就是不管学习什么东西,实践是很重要的,任何东西只有理论基础而没有实践,对个人而言其实就相当于没学,两三天过后就忘干净了,希望我也能多多实践,尽快成为编程高手