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

时间:2015-08-03 21:18:09

标签: java spring dbunit spring-test-dbunit

我正在使用Spring测试dbunit库,我对数据集有疑问。我有一个POJO代表我想要在我的测试中持久存储到内存数据库中的实体。此POJO未注释@Entity@Table@Column等任何JPA注释,是否可以在带有@DatabaseSetup注释的XML数据集文件中使用此类?

代码示例: 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:Person

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

1 个答案:

答案 0 :(得分:0)

不,您不需要任何JPA注释。问题是您正在使用的数据库缺少名为Person的表。 DBUnit将插入数据,但它不会为您创建表(有一个类似的问题: Is there any way for DBUnit to automatically create tables?

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