通常,您可以通过编写一个简单的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