J'ai une fonction définie par l'utilisateur dans MS SQL Server appelée à partir du code Java qui semble être indéfinie lors de l'exécution des tests d'intégration dans la base de données H2. Vous pouvez trouver mon code au the previous question.DbUnit - JdbcSQLException: La fonction "*" est introuvable
Code d'essai:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {H2Config.class})
@TestExecutionListeners({
DependencyInjectionTestExecutionListener.class,
DbUnitTestExecutionListener.class,
TransactionalTestExecutionListener.class
})
@TransactionConfiguration(defaultRollback = true)
public class TableDaoTest {
@Autowired
private TableDao tableDao;
@Test
@DatabaseSetup("/datasets/import.xml")
public void testMethod01() {
tableDao.getRecordsByGroup();
...
schéma de base de données est générée automatiquement par Hibernate. Comme vous pouvez voir les données pour le test est peuplé par DbUnit en utilisant le jeu de données XML. Et ce test échoue car ma fonction qui existe dans la base de données du serveur MS SQL n'est pas définie dans la base de données H2.
journal d'application:
Caused by: org.hibernate.exception.GenericJDBCException: could not prepare statement
...
Caused by: org.h2.jdbc.JdbcSQLException: Function "SAFE_MOD" not found; SQL statement:
select table10_.id, table10_.value, ... from Table1 table10_ where table10_.group1=dbo.safe_mod(?, ?);
...
Comment importer/créer une fonction avant le test DbUnit?