Unitils模塊
配置
和大多數(shù)的項(xiàng)目一樣,unitils也需要一些配置,默認(rèn)情況下有3個(gè)配置,每個(gè)配置都覆寫(xiě)前一個(gè)的配置
- unitils-default.properties 默認(rèn)的配置,在unitils發(fā)行包中。
- unitils.properties 可包含項(xiàng)目的全部配置
- unitils-local.properties 可以包含用戶特定配置
第一個(gè)配置文件unitils-default.properties,它包含了缺省值并被包含在unitils的發(fā)行包中。我們沒(méi)有必要對(duì)這個(gè)文件進(jìn)行修改,但它可以用來(lái)作參考。
第二個(gè)配置文件unitils.properties,它是我們需要進(jìn)行配置的文件,并且能覆寫(xiě)缺省的配置。舉個(gè)例子,如果你的項(xiàng)目使用的是oracle數(shù)據(jù)庫(kù),你可以創(chuàng)建一個(gè)unitils.properties文件并覆寫(xiě)相應(yīng)的driver class和database url。
database.driverClassName=oracle.jdbc.driver.OracleDriver database.url=jdbc:oracle:thin:@yourmachine:1521:YOUR_DB
這個(gè)文件并不是必須的,但是一旦你創(chuàng)建了一個(gè),你就需要將該文件放置在項(xiàng)目的classpath下
最后一個(gè)文件,unitils-local.properties是可選的配置文件,它可以覆寫(xiě)項(xiàng)目的配置,用來(lái)定義開(kāi)發(fā)者的具體設(shè)置,舉個(gè)例子來(lái)說(shuō),如果每個(gè)開(kāi)發(fā)者都使用自己的數(shù)據(jù)庫(kù)schema,你就可以創(chuàng)建一個(gè)unitils-local.properties為每個(gè)用戶配置自己的數(shù)據(jù)庫(kù)賬號(hào)、密碼和schema。
database.userName=john database.password=secret database.schemaNames=test_john
每個(gè)unitils-local.properties文件應(yīng)該放置在對(duì)應(yīng)的用戶文件夾中(System.getProperty("user.home"))。
本地文件名unitils-local.properties也可以通過(guò)配置文件定義,在unitils.properties覆寫(xiě)unitils.configuration.localFileName就可以。
unitils.configuration.localFileName=projectTwo-local.properties
啟用你的unitils
unitils的功能是依賴于基礎(chǔ)的測(cè)試框架,要使用unitils的功能,就必須先enable他們,這樣做的目的也是為了容易擴(kuò)展。目前支持的框架有:
- JUnit3 :org.unitils.UnitilsJUnit3
- JUnit4 :org.unitils.UnitilsJUnit4
- TestNG:org.unitils.UnitilsTestNG
舉個(gè)例子,如果使用JUnit3,你要使用unitils
import org.unitils.UnitilsJUnit3; public class MyTest extends UnitilsJUnit3 { }
通常你將創(chuàng)建你自己的包含一些公共行為的測(cè)試基類,如dataSource的注入,你可以讓這個(gè)基類繼承unitils測(cè)試類。
當(dāng)你使用的是JUnit4的話,你也可是使用@RunWith來(lái)代替繼承unitils測(cè)試類
import org.junit.runner.RunWith; import org.unitils.UnitilsJUnit4TestClassRunner; @RunWith(UnitilsJUnit4TestClassRunner.class) public class MyTest { }
模塊系統(tǒng)
在開(kāi)始舉例之前,讓我們先了解一下unitils概念。
unitils的結(jié)構(gòu)被設(shè)計(jì)成了十分容易擴(kuò)展,每個(gè)模塊提供了一種服務(wù),當(dāng)執(zhí)行Test的時(shí)候通過(guò)TestListener調(diào)用相應(yīng)的服務(wù)。
這種設(shè)計(jì)采用了一個(gè)統(tǒng)一的方式提供服務(wù),如果你需要加入其他的服務(wù),無(wú)需去改編測(cè)試基類(UnitilsJUnit4這些類)。要加入新的服務(wù)只需要添加一個(gè)新的模塊并在unitls配置文件中登記這個(gè)模塊。
目前unitils中所有有效的模塊如下:
- DatabaseModule 數(shù)據(jù)庫(kù)單元測(cè)試的維護(hù)和連接池。
- DbUnitModule 使用DBUnit來(lái)管理測(cè)試數(shù)據(jù)。
- hibernatemodule 支持Hibernate的配置和自動(dòng)數(shù)據(jù)庫(kù)映射檢查。
- EasyMockModule 支持創(chuàng)建mock和寬松的反射參數(shù)匹配。
- InjectModule 支持在一個(gè)對(duì)象中注入另一個(gè)對(duì)象。
- SpringModule 支持加載spring的上下文配置,并檢索和Spring Bean注入。