0

Spring テスト dbunit ライブラリで遊んでいます。データセットについて質問があります。POJOテストでメモリ内データベースに保持したいエンティティを表す があります。これは、またはのPOJOような JPA アノテーションによって注釈が付けられていません。注釈付きの XML データセット ファイルでそのようなクラスを使用することは可能ですか?@Entity@Table@Column@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 アノテーションが必要ですか?

4

1 に答える 1

0

いいえ、JPA アノテーションは必要ありません。問題は、使用している DB に という名前のテーブルがないことですPerson。DBUnit はデータを挿入しますが、テーブルは作成しません (これについて同様の質問があります: DBUnit が自動的にテーブルを作成する方法はありますか? ) 。

スキーマを管理するには、 flywayliquibaseなどの「データベース移行」を管理するツールを使用することをお勧めします。これらのツールはどちらもSpringと統合されているため、Springがロードされたときにスキーマを作成できます.

于 2015-08-03T21:47:43.943 に答える