5

这里https://stackoverflow.com/a/52968130/10894456 很好地解释了为什么 @DataJpaTest @SpringBootTest 不应该混合在一个应用程序中。

但是当无论如何都需要测试 MVC SpringBoot 应用程序的每一层时,几乎没有解释这种情况(从我的角度来看,很自然地不仅要测试一个层或仅测试另一层,而且还要测试两个甚至所有层,不是吗?)

所以有人建议使用@AutoConfigureTestDatabase 而不是@DataJpaTest 但没有完成工作(((

所以我的问题是:使用@AutoConfigureTestDatabase 是一个合适的解决方案吗?如果是,请详细说明。如果没有,请提出更合适的解决方案,谢谢

4

2 回答 2

9

假设您想要完整的应用程序,除了数据库在内存中,是的,将 @SpringBootTest 与 @AutoConfigureTestDatabase 结合是一个合适的解决方案,因为它就是这样做的。

@DataJpaTest 的文档中也提到了它:

如果您希望加载完整的应用程序配置,但使用嵌入式数据库,则应考虑将 @SpringBootTest 与 @AutoConfigureTestDatabase 结合使用,而不是使用此注解。

于 2019-04-24T20:48:12.327 回答
1

我尝试使用这个@AutoConfigureTestDatabase东西,但它没有用,然后,我发现这个Spring H2 测试数据库在每次测试之前都没有重置并且添加@Transactional工作!

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = Application.class)
@WebAppConfiguration
@Transactional
public class ClippingControllerTest {

相关问题:

  1. 如何使用 Junit 5 在 Spring boot 2.1.0.M4 中使用 @DataJpaTest 测试 Spring CrudRepository
  2. 测试时出错:为测试类找到了多个@BootstrapWith 声明
  3. Junit 测试后的数据库清理

相关文章:

  1. https://brightinventions.pl/blog/clear-database-in-spring-boot-tests/
  2. https://medium.com/@dSebastien/cleaning-up-database-tables-after-each-integration-test-method-with-spring-boot-2-and-kotlin-7279abcdd5cc
  3. https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing
于 2020-07-19T06:52:22.840 回答