web-dev-qa-db-ja.com

Spring Boot 1.4 @DataJpaTest-「dataSource」という名前のBeanの作成エラー

新しい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')
}

私が間違っていることはありますか?

17
Matt

デフォルトでは組み込みデータベースは提供していません。デフォルトでは、DataJpaTestDataSourceを埋め込みデータベースに置き換えますが、データベースはありません。

したがって、MySQLでテストする場合は、次のようにテストを置き換えます。

@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = NONE)
final public class MyRepositoryTest {
}

これらのテストにメモリ内データベースを使用する場合は、テストクラスパスに追加する必要があります。これをgradleファイルに追加してください

testCompile('com.h2database:h2')
48
Stephane Nicoll