清單 2 是一個 Ant 腳本片段,介紹了執行一批單元測試的 junit 任務。這項任務與 JUnit 一起運作,其妙處在于:定義過的所有測試現在都能自動運行并且如果其中任何一個測試失敗,則構建也將失敗 —— 通過使用 haltonfailure 屬性實現。
清單 2. 在 Ant 中運行單元測試
<junit fork="yes" haltonfailure="true" dir="${basedir}" printsummary="yes">
<classpath refid="test.class.path" />
<classpath refid="project.class.path"/>
<formatter type="plain" usefile="true" />
<formatter type="xml" usefile="true" />
<batchtest fork="yes" todir="${logs.junit.dir}">
<fileset dir="${test.unit.dir}">
<patternset refid="test.sources.pattern"/>
</fileset>
</batchtest>
</junit>
注意:test.unit.dir 指定測試的位置。這是將這些測試(在本例中為單元測試)和其他測試隔離起來的有效方法。通過利用這項技術,可以通過定義另外的 Ant 目標來先運行較快的測試,接著運行較慢的測試(如組件測試、功能測試和系統測試)。
集合組件測試
由于單元測試執行得相當快,很容易將它們作為構建的一部分經常運行。但這些測試并未達到一個高的代碼覆蓋率 —— 其隔離的本質決定了它們只測試一部分功能。編寫具有更多代碼(從而可實現更多功能)的測試通常要以附屬框架的形式執行更多的調查工作。一旦開始使用這些幫助框架來編寫測試,這些測試就開始成為更高級別的測試,我把它們歸類為組件測試。
組件測試是基本的測試,這些測試將驗證不止一個類,且通常依賴于外部依賴項,如數據庫。組件測試的編寫方式和單元測試大體一致,只是前者并非通過模擬或存根類來強制隔離,實現這些測試可謂勉為其難,但可以利用框架來便利對外部依賴項的使用。例如,我通常使用 DbUnit 框架來幫助管理數據庫,以便組件測試可驗證依賴數據庫數據的代碼功能。
用 DbUnit 控制數據庫狀態
DbUnit 是一個框架,它使針對數據庫的測試過程變得更加簡單。它提供了一個標準 XML 格式,用于定義一些測試數據,以便從數據庫中選擇、更新、插入和刪除數據。請牢記,DbUnit 并沒有替換數據庫;它只是提供了一種更加有效的機制來處理測試數據。您可以用 DbUnit 來編寫依賴于特定數據的測試,DbUnit 保證該數據位于底層的數據庫中。
可以在 JUnit 中可編程地使用 DbUnit,或者可以將它作為構建過程的一部分使用。該框架帶有一個 Ant 任務,該任務提供了一種使用 XML 文件來操作、導出或比較數據庫中數據的方法。例如,清單 3 演示了 dbunit 任務,在本文的例子中,該任務將測試數據插入到目標數據庫中,然后在運行完所有組件測試后刪除數據:
文章來源于領測軟件測試網 http://www.kjueaiud.com/