有几点需要关注:
1
——
一个测试案例必须要继承自
TestCase
;
2
——
JUnit
是通过反射机制来执行每一个
test
方法,它通过匹配方法名
testXXX
来确定一个方法为需要执行的测试
Case
。
3
——
使用一个或几个
assertXXX
方法来验证我们的情况。
好,现在使用
JUnit 4.x
来实现相同的测试,从中,我们就能看到一些新的东西:
首先关注以下几点:
1
——我们的测试类并没有
extends TestCase
类了,
2
——我们的测试方法并没有以
test
开头,而是使用了
@Test
标签来标记该方法是一个需要测试的方法。
下面的图标示了用
JUnit 4.x
我们需要做的事情:
1
——我们需要引进
org.junit.Test
标签,还有很多标签都在
org.junit.*
包里面。
2
——引进
static assertEquals
静态方法,引入静态方法也是
Java 5
的一个新的特性,避免了使用过长的应用方法名。
3
——引进
JUnit4TestAdapter
,这是一个和老版本
JUnit
工具合用的适配器。
4
——使用
@Test
标签来申明一个方法需要测试。
5
——直接使用需要的
assert
方法
6
——使用一个
main
方法来用
JUnit4TestAdapter
在老的
Junit runner
上运行新的测试。
总结一下:
l
使用一个普通的类,而不必继承自
Junit.framework.TestCase
。
l
使用
@Test
标签来标记一个方法是一个测试方法。
l
使用一个
assert
方法。在新版本的
Junit
中,
assert
方法和老方法没有什么区别。并且使用静态方法引入,(
static import
)特性来简化方法的使用。
l
使用
JUnit4TestAdapter
来运行测试。
Set up
和
tear down
新版本的
JUnit
提供了两个新的标签来使用
set up
和
tear down
:
@Before
:使用了该标记的方法在每个测试方法执行之前都要执行一次。
@After
:使用了该标记的方法在每个测试方法执行之后要执行一次。
这里有个测试的例子:
如果我们在所有的方法中都添加一个
System.out.println()
方法,执行的结果会像这样:
runOnceBeforeAllTests()
被调用;
bookNotAvailableInLibrary()
被调用;
bookAvailableInCentralLibrary
()被调用;
runAfterAllTests
()被调用,
而如果我们还有一个
@Before beforeTest()
方法和一个
@After afterTest()
方法,那么执行的结果会是这样:
runOnceBeforeAllTests()
被调用;
beforeTest()
被调用;
bookNotAvailableInLibrary()
被调用;
afterTest
()被调用;
beforeTest()
被调用;
bookAvailableInCentralLibrary
()被调用;
afterTest
()被调用;
runAfterAllTests
()被调用,
从这里我们就可以看出两者的区别了。
另外一点,
@Before
和
@After
标示的方法只能各有一个。
错误处理:
在
JUnit4.0
之前,对错误的测试,我们只能通过
fail
来产生一个错误,并在
try
块里面
assertTrue
(
true
)来测试。现在,通过
@Test
标签中的
expected
属性,就可以更优雅的测试错误了:
在这段代码中,我们为
@Test
标签添加了
expected
属性,并提供了一个
BookNotAvailableException
,那么在这段测试中,如果代码没有抛出这个类型的错误,测试就失败了,如果正确抛出该类型错误,测试通过。
其他的标签:
@ignore
标签:
该标签标记的测试方法在测试中会被忽略。当测试的方法还没有实现,或者测试的方法已经过时,或者在某种条件下才能测试该方法(比如需要一个数据库联接,而在本地测试的时候,数据库并没有连接),那么使用该标签来标示这个方法。同时,你可以为该标签传递一个
String
的参数,来表明为什么会忽略这个测试方法。比如:
@lgnore(“
该方法还没有实现
”)
,在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。
@Test(timeout=xxx):
该标签传入了一个时间(毫秒)给测试方法,
如果测试方法在制定的时间之内没有运行完,则测试也失败。
这篇文章就到这里,其实
JUnit4.x
里面还有很多标签的用法,将在明天的
blog
中继续。
(注:本文作者,EasyJF开源团队 stef_wu,转载请保留作者声明!)
posted on 2006-11-19 19:27
简易java框架 阅读(2501)
评论(1) 编辑 收藏