当前位置: 首页 > 知识库问答 >
问题:

如何将@SpringBootTest(webEnvironment)与@DataJpatest一起使用?

姬翰林
2023-03-14

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

以下是我目前正在尝试的:

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

我得到以下错误

java.lang.IllegalStateException:配置错误:发现测试类[app.myResourceTest]的@bootstrapwith的多个声明:[@org.springframework.test.context.bootstrapwith(value=class org.springframework.boot.test.context.springbootcontextbootstrapper)、@org.springframework.test.context.bootstrapwith(value=class

我看到的其他类似的文件没有讨论WebEnvironment设置:

  • 如何在SpringBootTest中导入@DataJpatest中的配置类?
  • 与@springboottest一起使用时删除@datajpatest的推荐方法

使用@AutoConfigureTestDatabase有一定的解决方案,但当我这样做时,只有第一个方案起作用,因为BuildData是用@before注释的(与@DataJpatest中的注释相同),因为我希望在每次测试之前数据是原始的,以便能够执行失败场景。

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

共有1个答案

佟云
2023-03-14

@datajpatest文档说明如下:

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

请记住,@datajpatest是用@transactional@dirtiescontext注释的。因此您可能需要这些注释以及@autociguretestdatabase

 类似资料:
  • 我试图用DataJpaTest注释测试我的存储库,但出现了一些奇怪的情况。 当我使用经典的时,一切正常,我的测试成功了。但是当我使用下面的生成器时,我的测试失败了。 测试应该成功,但其他测试没有成功,因为没有抛出关于约束有效性的异常。 例如,这里有一个失败的断言: Java语言AssertionError:预期测试将抛出org的实例。springframework。道。DataIntegrityV

  • 我在Ubuntu 14.04中安装了phpbrew以使用PHP5.4。它工作得很好,但当我尝试使用composer时除外,composer会忽略phpbrew并安装与PHP5.5相关的依赖项。 有没有办法强制composer与phpbrew config兼容?我试图在我的作曲家中添加:php:“5.4”。json,但是它说这个要求在我的php版本中是不可能的。

  • 我是Micronaut框架的新手,我正在尝试使用entitymanager创建我的存储库。我这样创建了我的存储库 我使用这个类实现接口并注入entitymanager 问题是我一直有这个错误: PS:我已经启用了注释处理

  • 我正在尝试将composer与我的WampServer一起使用。 我所有文件的路径都是,但当我运行composer时,它会将供应商文件和其他东西安装到其他地方。 我甚至不知道我的项目在哪里,我也不能改变我的项目在哪里的路径。我已经尝试了所有的方法,但它似乎仍然没有在我的项目文件夹中安装供应商文件。

  • API level 28和Google建议使用registerNetworkCallback(NetworkRequest,PendingIntent)不推荐CONNECTIVITY\u操作。 我尝试使用ConnectionManager注册了registerNetworkCallback。NetworkCallback和它的工作,但我想使用PendingContent。 让我困惑的是公共空寄存器

  • 问题内容: 当我尝试将Webpack与简单的Express服务器一起使用时,总是会收到大量错误消息: express.js 我得到所有这些错误: 这是我的配置文件: 我该怎么办,我还需要在服务器端使用webpack。 我像这样运行express.js文件: 问题答案: 我最终要做的是,我使用了两种不同的配置,一种用于使用webpack将服务器内容打包在一起,另一种用于将所有浏览器内容打包在一起,并