5

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

我的测试如下所示:

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

数据集.xml

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

据推测,使用 DatabaseOperation.DELETE 意味着“删除与数据集中的行匹配的数据库表行”。但是当我执行测试时,它会删除我表中的所有数据。

我认为问题在于用于拆卸的 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 文件进行设置和拆卸。

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

4

1 回答 1

7

插入数据库的记录不是被@DatabaseTearDown注解删除的,而是被@DatabaseSetup. 原因是 DbUnit 默认情况下会清理表,然后插入测试记录。您可以通过使用来防止这种情况DatabaseOperation.INSERT

于 2014-12-09T14:25:51.813 回答