新しい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
を埋め込みデータベースに置き換えますが、データベースはありません。
したがって、MySQLでテストする場合は、次のようにテストを置き換えます。
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = NONE)
final public class MyRepositoryTest {
}
これらのテストにメモリ内データベースを使用する場合は、テストクラスパスに追加する必要があります。これをgradleファイルに追加してください
testCompile('com.h2database:h2')