这是一种建筑和一个广泛的问题。
我有一个有三层的弹簧休息应用程序。 (1)前端控制器(其余或mvc控制器),(2)控制器和DAO之间的服务层,(3)DAO层,在我的例子中是弹簧数据jpa存储库。现在,问题是,我已经使用带有测试切片的@WebMvcTest为控制器编写了集成测试。对于DAO层,我使用@DataJpaTest,它是JPA存储库的切片测试。服务层是普通的java类,因此我只使用模拟DAO进行单元测试。
现在,是否还有充分的理由进行完整的集成测试,这将启动整个容器并点击数据库?
我还在我的应用程序中发送SpringApplicationEvents。有没有必要测试它们是否正常工作?如果是,怎么做?
服务层还控制交易。再次,是否需要测试交易是否按预期工作,以及如何?
提前致谢
答案 0 :(得分:2)
封装,分别。简化测试数据库处理(设置/清理)可能需要查看Testcontainers。
src/test/java
包下面的监听器来处理,该监听器监听业务代码触发的事件。在制作中,这个测试听众不会损害应用程序。至少对于同步事件来说这很容易,如果是关于异步事件,它会变得棘手。也许Awaitility可以提供帮助。