Ger*_*not 7 java spring hibernate spring-data-jpa spring-boot
我想配置一个 Spring Boot 应用程序,以便根本不使用数据库。所以我注释了我的 Application 类以排除 JPA 自动配置类:
@SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class Application {
public static void main(final String... args) {
run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
当服务独立运行时,这工作正常
不幸的是,我的测试类似乎忽略了注释,尽管我使用 Application 类进行测试
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SwaggerJsonExistenceTest {
...
}
Run Code Online (Sandbox Code Playgroud)
测试失败并显示以下错误消息
引起:org.springframework.beans.factory.BeanCreationException:创建名为“dataSource”的bean时出错:调用init方法失败;嵌套异常是 java.lang.IllegalStateException:无法确定用于测试的嵌入式数据库。如果您想要一个嵌入式数据库,请在类路径上放置一个受支持的数据库。
更新:类路径上没有数据库驱动程序。
org.springframework.boot:spring-boot-starter-data-jpa 用于测试(通过 gradle 中的 testCompile 指令包含)
如何配置测试以使其不使用与数据库相关的自动配置?
修复:我已经删除了所有 jpa starter 依赖项(因为不需要 DB),所以根本没有完成数据源自动配置。
小智 0
该@SpringBootApplication注释有一个排除属性,在这种情况下您应该使用该属性@EnableAutoConfiguration(exclude = ...)。如果您使用它,@SpringBootTest带注释的测试应该正确执行排除。
Spring Boot API - SpringBootApplication
| 归档时间: |
|
| 查看次数: |
6974 次 |
| 最近记录: |