Hibernate二级数据缓存和集成/验收测试

ike*_*ke3 5 java selenium caching hibernate jpa

我有一个JPA/Hibernate/Spring/Tomcat Web应用程序,出于性能原因启用了二级数据缓存.缓存可以很好地工作!

我还有一个Cucumber测试套件,它将一些测试数据直接添加到应用程序的数据库中,然后执行一些Selenium步骤.当然它失败了,因为应用程序因为二级缓存而没有看到更新.

我知道我可以在禁用缓存的情况下进行特殊构建测试(通过为Maven过滤或类似传递一些布尔属性)但是有很多@Cache注释实体因此禁用缓存会导致应用程序失败,异常"二级缓存不是启用".

另一种方法可能是使用ehcache远程处理来清除缓存或使用零对象生存期或类似配置它.

我也可以仅使用应用程序UI创建测试数据,但这会给测试用例增加不必要的复杂性,所以我更喜欢在测试运行之前将它们写入数据库.

任何人都可以在启用二级数据缓存的情况下分享他们的集成测试应用程序吗?

Sta*_*sev 0

由于您正在谈论通过 Selenium 进行功能测试,因此您应该将您的应用程序视为一个黑匣子并对其进行测试,因为 Selenium 实际上是一个用户。因此,您需要通过 Web 界面传递数据,然后测试应用程序如何处理它并随后显示它。

这种应用程序范围的功能测试的替代方案是行为驱动开发,对不同组件进行测试。这里的组件是从控制器开始的一些流程,以 DAO 结尾(通常 DAO 在此类测试中被模拟,这使得它们通过得非常快,但不测试与数据库的工作)。在这种情况下,您有一小组完整的环境测试和一大组 BDD 测试。