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