在使用AbstractTransactionalDataSourceSpringContextTests这个作为测试hibernate的Service时,遇到这样的一个问题。 就是一定要在代码中显示的调用session.flush()。 更改操作才能立即看到。。
比如
public void testDeleteBillingEntity(){
getBillingEntityService().deleteBillingEntity(1);
assertEquals("BillingEntity(1) should be not existed", getJdbcTemplate().queryForInt("SELECT COUNT(*) FROM BILLING_ENTITY WHERE ID=1"), 0);
}
如果我不在getBillingEntityService().deleteBillingEntity(1) 方法里面调用sesson.flush()的话。 这个测试是失败的。但是在真是环境中的话不调用session.flush()是能行的。Hibernate 默认的是autoFlush 大家应该也遇到相同的问题吧。 是如何解决的?
谢谢
分享到:
相关推荐
在实际操作中,我们可能需要创建一个测试类,继承Spring的AbstractTransactionalDataSourceSpringContextTests或类似的基类,这样可以在每个测试方法前后自动处理事务。在测试方法中,使用Spring提供的JdbcTemplate...
1. **配置Spring测试环境**:使用Spring Test模块,创建一个继承自`AbstractTransactionalDataSourceSpringContextTests`或`AbstractTransactionalJUnit4SpringContextTests`的测试类。这两个类提供了事务管理,确保...
- `@RunWith(SpringJUnit4ClassRunner.class)`:这是JUnit测试类必须的注解,它告诉JUnit使用Spring提供的测试运行器来执行测试。 - `@ContextConfiguration`:用于指定配置文件的位置或加载ApplicationContext的...
在Spring项目中,我们需要创建一个测试配置类,该类通常继承自`AbstractTransactionalDataSourceSpringContextTests`或`AbstractTransactionalJUnit4SpringContextTests`,这两个类提供了事务管理和数据源的自动...
2. **创建测试类**:创建一个继承自Spring的AbstractTransactionalDataSourceSpringContextTests的测试类,这个类提供了事务管理,并自动回滚事务,防止测试对数据库产生副作用。 3. **注入依赖**:使用Spring的@...
Spring还提供了如`AbstractTransactionalDataSourceSpringContextTests`和`AbstractTransactionalJUnit4SpringContextTests`这样的基类,它们提供了自动事务管理和数据库清理的功能,简化了数据库测试的编写。...
- Spring提供了`AbstractTransactionalDataSourceSpringContextTests`基类,用于创建基于Spring的事务测试环境,方便对整合后的代码进行单元测试。 6. **优点** - **解耦**:通过Spring管理Hibernate的...