2

J'ai essayé d'écrire des tests unitaires pour mes services de base de données selon cet exemple (https://github.com/21decemb/spring-boot-dbunit-example). J'ai créé un ensemble de données et un exemple de test. Après je lance le test I recived: org.dbunit.dataset.NoSuchTableException: commandesDBUnit erreur: NoSuchTableException

dataset.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<dataset> 

<!-- CUSTOMER DATA --> 
<customers id="1" name="Customer" active="1"/> 

<!-- POSITION DATA --> 
<positions id="1" name="POSITION1"/> 
<positions id="2" name="POSITION2"/> 
<positions id="3" name="POSITION3"/> 


<!-- ORDER DATA --> 
<orders id="1" name="order1" color="RED" express="0" date="2016-12-11 19:47:39" last_update="2016-12-11 19:47:39" parent_id="1" active="1"/> 
<!--<orders id="2" name="order2" color="WHITE" customer_id="1" position_id="1" express="0" date="2016-12-11 19:47:39" last_update="2016-12-11 19:47:39" active="0"/>--> 


</dataset> 

second ordre Row est commenté becacuse je testais deux possibilités. Je sais que c'est à cause des jointures. Lorsque je ne teste que les «positions» et les «clients» (entités simples sans jointures), cela fonctionne correctement.

Mon "Commander" entité:

@Entity 
@Table(name = "orders", schema = Config.dbSchema) 
public class Order implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private long id; 

    private String name; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name="POSITION_ID") 
    private Position position; 

    private short express; 

    private Date date; 

    @Column(name="LAST_UPDATE") 
    private Date lastUpdate; 

    @Column(name="parent_id") 
    private Long parentId; 

    private short active; 

    @ManyToOne(fetch = FetchType.LAZY) 
    @JoinColumn(name="CUSTOMER_ID") 
    private Customer customer; 

    @OneToMany(mappedBy = "order", fetch = FetchType.LAZY) 
    private List<Component> components; 

    //getters and setters 

} 

Demandez quelqu'un une idée sur la façon de résoudre ce problème?

Merci d'avance.

Répondre

0

Vous devez ajouter cette propriété dans la méthode de remplacement setUpDatabaseConfig:

@Override 
protected void setUpDatabaseConfig(DatabaseConfig config) { 
    config.setProperty(DatabaseConfig.FEATURE_QUALIFIED_TABLE_NAMES, true); 
} 

En plus probablement vous devez ajouter le nom de schéma comme celui-ci:

<?xml version="1.0" encoding="UTF-8"?> 
<dataset> 

<!-- CUSTOMER DATA --> 
<schemaName customers id="1" name="Customer" active="1"/> 

<!-- POSITION DATA --> 
<schemaName positions id="1" name="POSITION1"/> 
<schemaName positions id="2" name="POSITION2"/> 
<schemaName positions id="3" name="POSITION3"/> 

<!-- ORDER DATA --> 
<schemaName orders id="1" name="order1" color="RED" express="0" date="2016-12-11 19:47:39" last_update="2016-12-11 19:47:39" parent_id="1" active="1"/> 
<!--<schemaName orders id="2" name="order2" color="WHITE" customer_id="1" position_id="1" express="0" date="2016-12-11 19:47:39" last_update="2016-12-11 19:47:39" active="0"/>--> 


</dataset>