H2 SQLデータベースで統合テストを実行しているときに定義されていないJavaコードから呼び出されるユーザー定義関数がMS SQL Serverにあります。私のコードはthe previous questionにあります。DbUnit - JdbcSQLException:関数 "*"が見つかりません
テストコード:
@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();
...
データベーススキーマは、Hibernateが自動生成されます。ご覧のように、テスト用のデータは、xmlデータセットを使用してDbUnitによって生成されます。また、MS SQLサーバーDBに存在する機能がH2データベースで定義されていないため、このテストは失敗します。
アプリケーションログ:DbUnitをテストする前に関数を作成/インポートする方法
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(?, ?);
...
?