我试图仅删除使用@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文件进行设置和拆卸。
但这必须是可能的,不是吗?
答案 0 :(得分:6)
@DatabaseTearDown
注释不会删除插入数据库的记录,而是@DatabaseSetup
。原因是默认情况下,DbUnit清除表,然后插入测试记录。您可以使用DatabaseOperation.INSERT
。