我正在玩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加载时创建模式。