dbunit java_Java – 让DbUnit使用Hibernate事务
我在嘗試將Hibernate事務(wù)中的更改推送到數(shù)據(jù)庫(kù)以使DbUnit在我的測(cè)試用例中正常工作時(shí)遇到問(wèn)題.似乎DbUnit沒(méi)有看到Hibernate所做的更改,因?yàn)樗鼈冞€沒(méi)有在事務(wù)結(jié)束時(shí)提交……而且我不確定如何重構(gòu)我的測(cè)試用例以使其工作.
這是我過(guò)度簡(jiǎn)化的測(cè)試用例來(lái)證明我的問(wèn)題: –
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {
"classpath:applicationContext-test.xml"
})
@TransactionConfiguration(transactionManager = "transactionManager")
@Transactional
public class SomeTest {
@Autowired
protected DataSource dataSource;
@Autowired
private SessionFactory sessionFactory;
@Test
public void testThis() throws Exception {
Session session = sessionFactory.getCurrentSession();
assertEquals("initial overlayType count",4,session.createQuery("from OverlayType").list().size());
//-----------
// Imagine this block is an API call,ex: someService.save("AAA");
// But for the sake of simplicity,I do it this way
OverlayType overlayType = new OverlayType();
overlayType.setName("AAA");
session.save(overlayType);
//-----------
// flush has no effect here
session.flush();
assertEquals("new overlayType count",5,session.createQuery("from OverlayType").list().size());
// pull the data from database using dbunit
IDatabaseConnection connection = new DatabaseConnection(dataSource.getConnection());
connection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY,new MysqLDataTypeFactory());
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable("resultSet","select * from overlayType");
ITable actualTable = partialDataSet.getTable("resultSet");
// FAIL: Actual row count is 4 instead of 5
assertEquals("dbunit's overlayType count",actualTable.getRowCount());
DataSourceUtils.releaseConnection(connection.getConnection(),dataSource);
}
}
我使用DbUnit的全部想法是: –
>調(diào)用someService.save(…)將數(shù)據(jù)保存到多個(gè)表中.
>使用DbUnit從XML獲取預(yù)期的表.
>使用DbUnit從數(shù)據(jù)庫(kù)中獲取實(shí)際表.
> Dosertion.assertEquals(expectedTable,actualTable);.
但是,在這一點(diǎn)上,我無(wú)法讓DbUnit看到Hibernate在事務(wù)中所做的更改.
我應(yīng)該如何改變以使DbUnit與Hibernate事務(wù)很好地協(xié)作?
謝謝.
總結(jié)
以上是生活随笔為你收集整理的dbunit java_Java – 让DbUnit使用Hibernate事务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: openssh 7.4 java使用_o
- 下一篇: java美元兑换,(Java实现) 美元