java - 如何将 @SpringBootTest(webEnvironment) 与 @DataJpaTest 一起使用?

标签 java spring jpa testing jax-rs

我正在尝试测试 JAX-RS 应用程序,但我不想模拟数据,特别是因为现有 @DataJpaTest 有一个 buildData 方法

>

这是我到目前为止正在尝试的:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
    classes = MyApp.class
)
@DirtiesContext
@DataJpaTest
public class MyResourceTest {

我收到以下错误

java.lang.IllegalStateException: Configuration error: found multiple declarations of @BootstrapWith for test class [app.MyResourceTest]: [@org.springframework.test.context.BootstrapWith(value=class org.springframework.boot.test.context.SpringBootTestContextBootstrapper), @org.springframework.test.context.BootstrapWith(value=class org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTestContextBootstrapper)]

我看到的其他类似的没有谈论 webEnvironment 设置:

有一些使用@AutoConfigureTestDatabase的解决方案,但是当我这样做时,只有第一个有效,因为buildData@Before注释(与 @DataJpaTest 相同)因为我希望数据在每次测试之前都是原始的,这样我就可以进行失败场景。

切换到 @BeforeClass 也不起作用,因为我将无法使用 @Autowire Repository 对象。

最佳答案

@DataJpaTest文档说明如下:

If you are looking to load your full application configuration, but use an embedded database, you should consider @SpringBootTest combined with @AutoConfigureTestDatabase rather than this annotation.


请记住 @DataJpaTest注释为 @Transactional@DirtiesContext 。因此,您可能需要这些注释以及 @AutoConfigureTestDatabase .

关于java - 如何将 @SpringBootTest(webEnvironment) 与 @DataJpaTest 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57609818/

相关文章:

java - Spring表单标签错误(绑定(bind)结果)

java - Android 如何放置电池信息?

java - spring中如何子类并发控制,抛出什么异常?

java - 持久性单元错误 更多 2 EntityManager s1 持久性单元?

java - Jetty 和 Java 代理无法使用日志记录工作

Spring Boot 执行器运行状况指示器

spring - 性能 - Spring Boot - 服务器响应时间

java - saveorupdate 方法出现重复输入错误

mysql - 如何在映射到 mysql 中的 varbinary 值的 byte[] hibernate 实体上创建 Id

java - 在validation.xml中添加SpringWebConstraintValidatorFactory时出现StackOverflowError