0

我正在玩 Spring 测试 dbunit 库,我有一个关于数据集的问题。我有一个POJO代表我想在我的测试中保存到内存数据库中的实体。这POJO不是由任何 JPA 注释注释的@Entity@Table或者@Column,是否可以在带有注释的 XML 数据集文件中使用此类@DatabaseSetup

代码示例:XML 数据集文件:

<?xml version="1.0" encoding="UTF-8"?>
    <dataset>
        <Person id="1" dateOfBirth="2000-07-25T10:55:58" age="10.5" sex="MALE"/>
    </dataset>

和人 POJO 类:

public class Person {

private Long id;
private LocalDateTime dateOfBirth;
private BigDecimal age;
private Sex sex;

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public LocalDateTime getDateOfBirth() {
    return dateOfBirth;
}

public void setDateOfBirth(LocalDateTime dateOfBirth) {
    this.dateOfBirth = dateOfBirth;
}

public BigDecimal getAge() {
    return age;
}

public void setAge(BigDecimal age) {
    this.age = age;
}

public Sex getSex() {
    return sex;
}

public void setSex(Sex sex) {
    this.sex = sex;
}

现在我收到以下错误:

org.dbunit.dataset.NoSuchTableException:人

我有另一个带有 JPA 注释的 POJO 类,它通过@DatabaseSetup注释处理而没有任何错误。我正在尝试在单个测试中使用两个 POJO。Spring 测试 DBUnit 库是否需要 JPA 注释才能在测试之前设置我的数据库?

4

1 回答 1

0

不,您不需要任何 JPA 注释。问题是您正在使用的数据库缺少一个名为Person. DBUnit 将插入数据,但不会为您创建表(有一个类似的问题: DBUnit 有什么方法可以自动创建表吗?

要管理架构,我建议您使用管理“数据库迁移”的工具,例如flywayliquibase。这两个工具都与 spring 集成,因此它们可以在 spring 加载时创建模式。

于 2015-08-03T21:47:43.943 回答