有幾點需要關注:
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框架 閱讀(2510)
評論(1) 編輯 收藏