Spring Boot 1.4 @DataJpaTest - 创建名为“dataSource”的 bean 时出错
Posted
技术标签:
【中文标题】Spring Boot 1.4 @DataJpaTest - 创建名为“dataSource”的 bean 时出错【英文标题】:Spring Boot 1.4 @DataJpaTest - Error creating bean with name 'dataSource' 【发布时间】:2017-05-09 23:34:36 【问题描述】:我创建了一个新的 spring boot 1.4 应用程序,想尝试使用 @DataJpaTest 进行一些测试,但不断收到以下错误消息
原因:org.springframework.beans.factory.BeanCreationException:创建名为“dataSource”的bean时出错:调用init方法失败;嵌套异常是 java.lang.IllegalStateException:无法确定用于测试的嵌入式数据库。如果您想要一个嵌入式数据库,请在类路径中放置一个受支持的数据库。
src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://localhost/my_db
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
MyRepositoryTest
@RunWith(SpringRunner.class)
@DataJpaTest
final public class MyRepositoryTest
build.gradle
dependencies
compile 'org.springframework.boot:spring-boot-starter-web',
'org.springframework.boot:spring-boot-starter-data-jpa',
'mysql:mysql-connector-java',
'org.projectlombok:lombok:1.16.10'
testCompile('org.springframework.boot:spring-boot-starter-test')
任何想法我做错了什么?
【问题讨论】:
@Matt,您必须添加 MySQL 配置类才能通过您的 mysql-connector-java 客户端建立连接。并检查是否在你的类路径中添加了MySQL驱动jar。 我希望使用嵌入式数据库进行 JPA 测试...@PraveenKumar 您需要在类路径中明确设置嵌入式数据库。 【参考方案1】:默认情况下,我们不提供嵌入式数据库。默认情况下,DataJpaTest
将您的 DataSource
替换为嵌入式数据库,但您没有。
因此,如果您想使用 MySQL 进行测试,请将您的测试替换如下:
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
final public class MyRepositoryTest
如果您想为这些测试使用内存数据库,您需要在测试类路径中添加一个。将此添加到您的 gradle 文件中
testCompile('com.h2database:h2')
【讨论】:
如果不想提供 AutoConfigureTestDatabase,我可以在属性文件中指定它吗?即 spring.test.database.connection: H2 那么您需要告诉引导不要覆盖您的数据源,以便需要注释。完成后,您可以随意配置数据源。如果您需要更多详细信息,我会创建一个单独的问题 另外,我有create an issue in our tracker,因为我想知道我们是否不能在这里做一些更聪明的事情。随时订阅更新或分享您对 Spring Boot 在这种情况下应该做什么的看法。 谢谢,我会订阅,看到讨论会很有趣 @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)【参考方案2】:请在课前添加。
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
它肯定会运行。
【讨论】:
以上是关于Spring Boot 1.4 @DataJpaTest - 创建名为“dataSource”的 bean 时出错的主要内容,如果未能解决你的问题,请参考以下文章
在 Spring Boot 1.4 中测试 Spring MVC 切片的问题
Spring boot 1.4 测试:配置错误:发现@BootstrapWith 的多个声明
spring cloud 版本 Brixton.SR5 with spring boot 1.4
Spring Boot 1.4:Spring Data Cassandra 1.4.2 与 Cassandra 3.0 不兼容?