web-dev-qa-db-fra.com

Spring Boot 1.4 @DataJpaTest - Erreur lors de la création du bean avec le nom 'dataSource'

J'ai créé une nouvelle application Spring Boot 1.4, je veux essayer des tests en utilisant @DataJpaTest mais je reçois toujours le message d'erreur suivant

Provoqué par: org.springframework.beans.factory.BeanCreationException: erreur lors de la création du bean avec le nom 'dataSource': l'appel de la méthode init a échoué; l'exception imbriquée est Java.lang.IllegalStateException: impossible de déterminer la base de données intégrée pour les tests. Si vous voulez une base de données intégrée, veuillez en mettre une prise en charge sur le chemin de classe.

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')
}

Des idées sur ce que je fais mal?

17
Matt

Nous ne fournissons pas de base de données intégrée par défaut. Par défaut, DataJpaTest remplace votre DataSource par une base de données intégrée mais vous n'en avez pas.

Donc, si vous voulez tester avec MySQL, remplacez votre test comme suit:

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

Si vous souhaitez utiliser une base de données en mémoire pour ces tests, vous devez en ajouter une au chemin de classe de test. Ajoutez ceci à votre fichier de notes

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