在使用AbstractTransactionalDataSourceSpringContextTests这个作为测试hibernate的Service时,遇到这样的一个问题。 就是一定要在代码中显示的调用session.flush()。 更改操作才能立即看到。。
比如
[code] public void testDeleteBillingEntity(){
getBillingEntityService().deleteBillingEntity(1);
assertEquals("BillingEntity(1) should be not existed", getJdbcTemplate().queryForInt("SELECT COUNT(*) FROM BILLING_ENTITY WHERE ID=1"), 0);
}[/code]
如果我不在getBillingEntityService().deleteBillingEntity(1) 方法里面调用sesson.flush()的话。 这个测试是失败的。但是在真是环境中的话不调用session.flush()是能行的。Hibernate 默认的是autoFlush 大家应该也遇到相同的问题吧。 是如何解决的?
谢谢
比如
[code] public void testDeleteBillingEntity(){
getBillingEntityService().deleteBillingEntity(1);
assertEquals("BillingEntity(1) should be not existed", getJdbcTemplate().queryForInt("SELECT COUNT(*) FROM BILLING_ENTITY WHERE ID=1"), 0);
}[/code]
如果我不在getBillingEntityService().deleteBillingEntity(1) 方法里面调用sesson.flush()的话。 这个测试是失败的。但是在真是环境中的话不调用session.flush()是能行的。Hibernate 默认的是autoFlush 大家应该也遇到相同的问题吧。 是如何解决的?
谢谢
本文探讨了在使用Hibernate进行单元测试时遇到的一个问题:如果不显式调用session.flush(),则无法立即看到更改效果。在真实环境中,Hibernate通常会自动刷新会话,但在测试环境下却不一定如此。
383

被折叠的 条评论
为什么被折叠?



