通常,您可以通過編寫一個簡單的XML文檔來指定要DBUnit插入的行,例如:
<?xml version="1.0" encoding="UTF-8"?>
<dataset><Person id="0" title="Mr" firstName="Dave" lastName="Smith"/><Person id="1" title="Mrs" firstName="Jane" lastName="Doe"/>
</dataset>
您還可以使用相同格式的XML文件來斷言數據庫包含特定的行。
DBUnit在使用內存數據庫時特別有效,如果使用Spring,則設置起來非常簡單。 這是一篇很好的文章,描述了如何入門。
直接使用DBUnit是可以的,但是過一會兒,很明顯,有多少測試遵循相同的數據庫設置模式,然后測試結果。 為了減少重復,您可以使用spring-test-dbunit項目 。 該項目托管在GitHub上,并提供了一組可以添加到您的測試方法中的新注釋。 1.0.0版剛剛發布,現在可以在Maven中央存儲庫中使用:
<dependency><groupId>com.github.springtestdbunit</groupId><artifactId>spring-test-dbunit</artifactId><version>1.0.0</version><scope>test</scope>
</dependency>
安裝后,可以在測試中使用三個新的注釋: @DatabaseSetup , @DatabaseTearDown和@ExpectedDatabase 。 這三種都可以在測試類上使用,也可以在單獨的測試方法上使用。
@DatabaseSetup和@DatabaseTearDown批注用于在測試運行之前或測試完成之后將數據庫置于一致狀態。 您指定要用作注釋值的數據集,例如:
@Test
@DatabaseSetup("sampleData.xml")
public void testFind() throws Exception {// test code
}
測試完成后, @ ExpectedDatabase批注用于驗證數據庫的狀態。 與前面的注釋一樣,您必須指定要使用的數據集。
@Test
@DatabaseSetup("sampleData.xml")
@ExpectedDatabase("expectedData.xml")
public void testRemove() throws Exception {// test code
}
您可以根據驗證的嚴格程度 ,在幾種不同的模式下使用@ExpectedDatabase (有關詳細信息,請參見JavaDocs )。
對于要處理的注釋,您需要確保測試使用的是DbUnitTestExecutionListener。 有關完整的詳細信息,請參見項目自述文件 。 如果您想了解更多信息,可以在GitHub上找到一個示例項目,并在此處獲得一些入門指南 。
參考: Phil Webb博客博客中的JCG合作伙伴 Phillip Webb 使用DBUnit,Spring和Annotations進行數據庫測試 。
翻譯自: https://www.javacodegeeks.com/2012/04/dbunit-spring-and-annotations-for.html