十一、 工具集成功能
當(dāng)我寫本文時(shí),JUnit 4在IDE方面的集成還不是很理想。事實(shí)上,如果你試圖運(yùn)行我們剛才看到的那個(gè)測(cè)試類的話,它們無(wú)法工作在任何IDE環(huán)境中,因?yàn)樗鼈儾荒鼙蛔R(shí)別為測(cè)試類。為了向前兼容性起見,JUnit 4發(fā)行中帶有一個(gè)適配器(junit.framework.JUnit 4TestAdapter),你必須把它使用于一個(gè)suite()方法中。下面是你必須添加到每個(gè)類中的代碼;這樣以來(lái),它們才能為各種IDE,Ant以及JUnit 3.8中的文本運(yùn)行機(jī)所識(shí)別:
public static junit.framework.Test suite() {
return new JUnit 4TestAdapter(CalculatorTest.class);
}
(一) Intellij IDEA
IDEA 5并沒有集成JUnit 4。沒有辦法,我們只好等待IDEA 6中實(shí)現(xiàn)這一集成了。在這個(gè)例子中,我使用了較早的發(fā)行版本(Demetra build 5321);但是,參數(shù)化測(cè)試用例仍不能工作。圖1展示了這個(gè)CalculatorTest的執(zhí)行情況(被忽略的測(cè)試以一個(gè)不同的圖標(biāo)標(biāo)志)。
圖1.IDEADemetra僅能運(yùn)行CalculatorTest。
圖2.Eclipse 3.2RC7能夠運(yùn)行測(cè)試集類AllCalculatorTests。
(二) Eclipse
我現(xiàn)在使用的是Eclipse的3.2 RC7版本。雖然它還不是一個(gè)穩(wěn)定發(fā)行版本,但是其與JUnit 4的集成優(yōu)于IDEA。上圖2展示了在運(yùn)行AllCalculatorTests類時(shí)你能看到的結(jié)果。
如你所見,該參數(shù)化測(cè)試用例(SquareTest)被描述為7個(gè)單獨(dú)的測(cè)試。
(三) Ant集成
junit任務(wù)當(dāng)前僅僅支持JUnit 3.8風(fēng)格測(cè)試;這也是說(shuō),你還必須用一個(gè)JUnit 4 TestAdapter來(lái)包裝你的JUnit 4測(cè)試;這樣,它們才能在Ant中運(yùn)行。這個(gè)<junit>任務(wù)與其在JUnit 3.8中用法一樣:
<!-- Test -->
<target name="test" depends="compile">
<junit fork="yes" haltonfailure="yes">
<test name=" JUnit 4.AllCalculatorTests"/>
<formatter type="plain" usefile="false"/>
<classpath refid="classpath"/>
</junit>
</target>
十二、 結(jié)論
有很長(zhǎng)一段時(shí)間,JUnit簡(jiǎn)直成了事實(shí)上的單元測(cè)試框架標(biāo)準(zhǔn)。但是,近來(lái),這個(gè)框架似乎無(wú)大"動(dòng)靜":沒有重要的發(fā)行版本,沒有引人注目的新特征出現(xiàn)。這可能是為什么其它測(cè)試框架,例如Test-NG開始逐漸占居測(cè)試框架市場(chǎng)統(tǒng)治地位的原因。
隨著這個(gè)新版本的發(fā)行,JUnit又出現(xiàn)了新的轉(zhuǎn)機(jī)。如今,它提供了許多新的API,而且現(xiàn)在還使用注解,所以使開發(fā)測(cè)試用例更為容易。事實(shí)上,該JUnit開發(fā)者已經(jīng)開始考慮新的未來(lái)的注解問題。例如,你可以在一個(gè)依賴于前提(舉例來(lái)說(shuō),你需要在線地執(zhí)行這個(gè)測(cè)試)的測(cè)試用例上添加一個(gè)@Prerequisite注解;或者添加一個(gè)能夠指定重復(fù)次數(shù)及時(shí)限(舉例來(lái)說(shuō),重復(fù)測(cè)試5次以確保真正出現(xiàn)了一個(gè)時(shí)限問題)的@Repeat注解;或者甚至在@Ignore注解上添加一個(gè)平臺(tái)參數(shù)(舉例來(lái)說(shuō),@Ignore(platform=macos),這將只有你在一個(gè)MacOS平臺(tái)上運(yùn)行時(shí)才忽略一個(gè)測(cè)試)。從本文中你能看到,JUnit的未來(lái)依然燦爛輝煌。