我正在使用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注释才能在测试之前设置我的数据库?
答案 0 :(得分:0)
不,您不需要任何JPA注释。问题是您正在使用的数据库缺少名为Person
的表。 DBUnit将插入数据,但它不会为您创建表(有一个类似的问题:
Is there any way for DBUnit to automatically create tables?)
要管理架构,我建议您使用管理“db迁移”的工具,例如flyway或liquibase。这两个工具都与spring集成,因此他们可以在spring加载时创建模式。