【发布时间】:2018-11-04 04:35:38
【问题描述】:
我正在使用 Javers 3.11.2 和 Spring Boot 1.5.17。当我尝试在嵌入式数据库上运行集成测试时,我仍然看到每次都会创建 Javers 表。
有没有办法可以在这些测试期间禁用 Javers,以便不会每次都创建这些表?
【问题讨论】:
标签: spring-boot spring-data-rest javers
我正在使用 Javers 3.11.2 和 Spring Boot 1.5.17。当我尝试在嵌入式数据库上运行集成测试时,我仍然看到每次都会创建 Javers 表。
有没有办法可以在这些测试期间禁用 Javers,以便不会每次都创建这些表?
【问题讨论】:
标签: spring-boot spring-data-rest javers
有一个简单的方法,把:
javers:
sqlSchemaManagementEnabled: false
在您的application-test.yml 中。见https://javers.org/documentation/spring-boot-integration/
【讨论】:
免责声明:我从未使用过 Javers。
一般来说,在“集成测试”中禁用某些东西意味着您不想加载一些 bean(在这种情况下是 Javers)。
这意味着您必须将它们从 spring boot 使用的配置列表中排除。
如果您使用 javers 自动配置模块,它必须在其自己的“spring.factories”文件(可以在 jar 中找到)中提供一个用于自动配置的文件。
找到它的 java 代码,看看它是否有一些“@Conditional on something (property beans, etc.)”如果它有然后创建一个用于集成测试的配置文件,它将以 javers 中的条件配置方式配置 bean 不会' t 通过,因此不会创建 bean
如果它没有类似这样的条件,则必须排除整个配置。通常可以通过注解@SpringBootApplication(exclude=<JaversAutoconfiguration goes here>
但是,这也会将其关闭以供生产使用,这显然不是您想要的。因此,对于“生产”配置文件,您必须将其作为常规配置(而不是自动配置)导入,对于集成测试配置文件,您不需要它。
【讨论】: