DbUnit @DatabaseTearDown注释:如何只删除某些记录? (使用@DatabaseSetup注释插入的那些)

时间:2014-12-09 10:44:24

标签: dbunit spring-test-dbunit

我试图仅删除使用@DatabaseSetup注释插入的那些记录。

我的测试看起来像这样:

@Test
@DatabaseSetup("classpath:data-set.xml")
@DatabaseTearDown(value={"classpath:data-set.xml"}, type= DatabaseOperation.DELETE)
public void testSomething() throws Exception {

数据set.xml

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <person id="1" name="Joe"/>
</dataset>

据说,使用DatabaseOperation.DELETE意味着&#34;删除与数据集中的行匹配的数据库表行。&#34;但是当我执行测试时,它会删除表格中的所有数据。

我认为问题是用于拆卸的xml文件的格式。我尝试使用不同的格式:

首先尝试使用tear-down.xml

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <person id="1"/>
</dataset>

第二次尝试使用tear-down.xml

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
    <person/>
</dataset>

无论使用何种格式,它始终会删除表中的所有数据。我无法找到用于拆除的格式的单个例子,并不能简单地列出表名。在大多数示例中,人们似乎都使用相同的xml文件进行设置和拆卸。

但这必须是可能的,不是吗?

1 个答案:

答案 0 :(得分:6)

@DatabaseTearDown注释不会删除插入数据库的记录,而是@DatabaseSetup。原因是默认情况下,DbUnit清除表,然后插入测试记录。您可以使用DatabaseOperation.INSERT

来阻止这种情况