DBUnit 更改在事务性 Spring 测试中不可见



我尝试在春季事务测试中用DBUnit填充数据库表。数据源是 TransactionAwareDataSourceProxy。所以我会把这个源交给 DBUnit,然后填充表应该对 jdbcTemplate 查询可见?

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"many contexts"})
@TransactionConfiguration(transactionManager = "transactionManager")
@Transactional
public class DBTest {
    @Autowired(required = true)
    TransactionAwareDataSourceProxy dataSource;
    private JdbcTemplate jdbcTemplate;
    @Autowired(required = true)
    public void setJdbcTemplate(TransactionAwareDataSourceProxy dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }
    @Autowired(required = true)
    SessionFactory sessionFactory;
    @Test
    @Transactional
    public void test() throws Exception {
        IDatabaseConnection dbConn = new DatabaseDataSourceConnection(dataSource);
        DatabaseOperation.CLEAN_INSERT.execute(dbConn, new XmlDataSet(ClassLoader.getSystemResourceAsStream("TABLE.xml")));
        System.out.println("Es wurden gefunden : " + this.jdbcTemplate.queryForInt("select count(*) from TABLE"));
        System.out.println("blaaa");
    }

查询始终返回 0。我错过了什么?

当 dbUnit 和生产应用程序共享相同的事务/数据源时,我看到会发生这种情况。 "修复"它的是"刷新",通过在测试中手动调用刷新或使用单独的事务或数据库连接(因此 dbUnit 的更改刷新)。

一种解决方案....我将 DBUnit 版本从 2.4.9 更改为 2.5.2,现在一切正常。

最新更新