使用Spring测试DBUnit @DatabaseSetup注释时需要JPA注释吗?



我正在玩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>

和Person 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注释,以便在测试之前设置我的数据库?

不,您不需要任何JPA注释。问题是您正在使用的DB缺少一个名为Person的表。DBUnit将插入数据,但它不会为您创建表(关于此有一个类似的问题:是否有任何方法可以让DBUnit自动创建表?)

要管理模式,我建议您使用管理'db迁移'的工具,如flyway或liquidbase。这两种工具都与spring集成,因此它们可以在spring加载时创建模式。

相关内容

  • 没有找到相关文章

最新更新