2

嗨,我在 dbunit 中遇到问题或验证数据集。让我们想象一下我有这样一张桌子

//initial-dataset.xml
<dataset>
      <user id="1"  ...other fields />
      <user id="3" ...other fields />
      <user id="4" ...other fields />
      <user id="2" ...other fields />
</dataset>

我有这样的测试课:

@DatabaseSetup("initial-dataset.xml")
public class UserTest {
    //tests for find operations

    @Test
    @ExpectedDatabase("expected-data.xml")
    public void testCreateUser() {
        // test for create
    }
}

我想验证新字段是否已添加到数据库中,并且我不想列出initial-dataset.xml我的expected-dataset.xml.

我尝试添加DatabaseAssertionMode.NON_STRICT,但使用此属性 dbunit 仍会检查预期数据集是否包含与实际数据库中用户表中完全相同的数量或行。

另一个解决方案是添加@DatabaseSetup这样的 xml 以进行创建操作:

<dataset>
    <user />
</dataset>

user在这种情况下,dbunit 将在运行测试之前清理表中的所有内容,在这种情况下,我expected-data.xml应该只包含我的测试执行结果。但在这种情况下,很难验证实际场景中可能发生的不同极端情况。

另一个解决方案是使用 unitils(dbunit 下的某种包装器),但是这个库有很奇怪的 @Dataset 和 @ExpectedDataset 概念

我担心的是,例如,另一个开发人员会更改或添加新条目,initial-dataset.xml然后他需要使用这个新字段更新所有预期数据集。

4

0 回答 0