我创建了一个新的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') }
任何想法我在做什么错?
默认情况下,我们不提供嵌入式数据库。默认情况下,DataJpaTest将您DataSource的数据库替换为嵌入式数据库,但是您没有数据库。
DataJpaTest
DataSource
因此,如果要使用MySQL进行测试,请按以下步骤替换测试:
@RunWith(SpringRunner.class) @DataJpaTest @AutoConfigureTestDatabase(replace = NONE) final public class MyRepositoryTest { }
如果要对这些测试使用内存数据库,则需要在测试类路径中添加一个。将此添加到您的gradle文件
testCompile('com.h2database:h2')