0

I am playing with Spring test dbunit library, I have a question about datasets. I have a POJO representing an entity I want to persist into in-memory database in my tests. This POJO is not annotated by any JPA annotations like @Entity, @Table or @Column, is it possible to use such class in XML dataset file with @DatabaseSetup annotation?

Code example: XML dataset file:

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

and Person POJO class:

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;
}

Right now I am getting following error:

org.dbunit.dataset.NoSuchTableException: Person

I have another POJO class with JPA annotations and it is processed without any errors by @DatabaseSetup annotation. I am trying to use both POJOs in single test. Are JPA annotations required by Spring test DBUnit library in order to setup my database before tests?

Harshal Patil
  • 6,659
  • 8
  • 41
  • 57
bbelovic
  • 61
  • 4

1 Answers1

0

No, you don't need any JPA annotations. The problem is that the DB you're using is missing a table named Person. DBUnit will insert the data, but it won't create the tables for you (There's a similar question about this: Is there any way for DBUnit to automatically create tables?)

To manage the schema I recommend you to use a tool that manages 'db migrations' such as flyway or liquibase. Both these tools integrate with spring, so they can create the schema when spring loads up.

Community
  • 1
  • 1
Augusto
  • 28,839
  • 5
  • 58
  • 88