- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们有一个依赖于 Spring Boot 2.0 的应用程序。我们正在将它从 JDK8 迁移到 JDK11。这也使我们能够将 Spring Boot 从 2.0 更新到 2.1。阅读变更日志后,我们似乎需要进行任何重大变更。
现在的问题在于某些测试类同时使用@SpringBootTest
和@DataJpaTest
进行注释。根据 this和文档一样,我们不应该同时使用两者,而是将 @DataJpaTest
更改为 @AutoConfigureTestDatabase
。代码如下:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {A.class, B.class}, properties = {
"x=xxx",
"y=yyy"
})
@AutoConfigureTestDatabase // Used to be @DataJpaTest
@EnableJpaRepositories("com.test")
@EntityScan("com.test")
public class Test {
@TestConfiguration
public static class TestConfig {
// Some beans returning
}
// Tests
}
现在,我们遇到了以下错误:
NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
根据this answer ,我们做了这样的事情:
@EnableJpaRepositories(basePackages="com.test", entityManagerFactoryRef="entityManagerFactory")
即使在这之后我们仍然会遇到同样的错误。这是删除 @DataJpaTest
的正确方法吗?或者我们是否需要删除 @SpringBootTest
并做其他事情?非常感谢任何形式的指导。
最佳答案
测试类用@DataJpaTest 和@ContextConfiguration 注解
@RunWith(SpringRunner.class)
@DataJpaTest
@ContextConfiguration(locations = { "classpath:test-context.xml" })
public abstract class AbstractTestCase {
protected static final Logger LOG = LoggerFactory.getLogger(AbstractTestCase.class);
}
我们定义了一个test-context.xml。这是因为测试模块与所有其他模块(多 maven 模块项目)隔离。在 test-context.xml 中,我们为基础包定义了组件扫描。
<context:component-scan base-package="de.example.base.package" />
关于java - 与@SpringBootTest 一起使用时删除@DataJpaTest 的推荐方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56459713/
我有一个具有以下结构的 Spring Boot 项目 src |--- main | |--- java | | |--- io.example.config | | |
目录 SpringBootTest 踩坑 SpringBootTest的一个小坑注意点 1、我当时运行SpringBoot测试类的时候踩这个坑
我靠@SpringBootTest在测试应用程序配置时非常重要。应用程序属性可能很复杂,具有默认值和重要的验证。例如: prop: ports: 1205,2303,4039 fqdn: ${
我正在使用 jasypt 加密 Spring Boot 应用程序中的 application.properties。我的目标是更新我的集成测试,以便 jasypt 与测试加密器密码一起使用。我的问题是
使用基于 Spring Boot 和 MongoDB 的一些端点实现微服务,并尝试使用 @SpringBootTest 注释功能编写集成测试. 目前,我面临一个问题,我需要预先填充一个嵌入式 Mong
我有一个类似于以下的代码: @RunWith(SpringRunner.class) @SpringBootTest public class ModelRunnerTest { @Autow
我的 SpringBootTest 注释无法解析为类型。这里有同样的问题,但似乎添加依赖项 org.springframework.boot spring-boot-starter-
我有一个带有数据库和 rabbitmq 用法的小型 Spring Boot 应用程序。 所以我想用集成测试(H2 + apache qpid)进行测试。 @ExtendWith(SpringExten
这就是单元测试的正确本质吗?我想我不明白我应该测试什么。 ConverterContext是一个策略类 @SpringBootTest @ExtendWith(SpringExtension.clas
我有一个正在测试 spring 应用程序部分的测试。它使用 SpringRunner 和注解 @SpringBootTest 所以它启动了一个完整的 spring 服务器。 问题是测试是由无法访问数据
我如何引导我的 Spring Boot 2 集成测试,以便在所有这些测试中我可以拥有一组配置,这些配置使用一些可用于所有集成测试的测试数据预先植入测试数据库? 最佳答案 假设您正在使用 h2 测试数据
目录 @SpringBootTest单元测试的坑 1、环境 2、遇到的问题 3、解决方式 Test类运行单元测试
我正在尝试在“干净”的上下文中运行 @SpringBootTest,而不执行 MyApplicationContextInitializer。 MyApplicationContextInitiali
我正在构建一个 Spring Boot 应用程序。我想像这样运行它: java -jar myjar.jar inputFile outputFile 我该如何写 @SpringBootTest为了
我有一个 @SpringBootTest 用于在服务器上执行集成测试。根据配置,我希望服务器的行为有所不同。配置本身由我的应用程序逻辑深处的 beans (scope = singleton) 读取,
我有一个带有 hibernate 功能的 SpringBoot 应用程序。在我的测试中,我想禁用任何类型的数据库连接和配置(测试无权访问数据库)。我该怎么做? 我的测试类用 @SpringBootTe
我想测试我的 WebSocket 应用程序。 测试类: @RunWith(SpringRunner.class) @SpringBootTest( webEnvironment = Sprin
我写了一个 ApplicationListener 应该检查环境是否在上下文初始化期间准备好。我在测试场景时遇到了麻烦,因为我在 configure() 和 main() 方法中手动添加了监听器。 应
我有一个简单的 Spring Boot 项目。 我正在使用 maven 进行依赖管理。 导入为 SpringBootTest不被认可,所以我得到: SpringBootTest cannot be r
我目前正在努力解决 SpringBootTest 实例的服务器端口注入(inject)问题。我编写了一个测试配置类,我想在其中访问此端口。 测试配置类: @Target(AnnotationTarge
我是一名优秀的程序员,十分优秀!