Je développe une application web avec Spring Boot, et maintenant j'essaye de créer des tests pour la couche DAO, et j'aimerais utiliser différentes configurations, qui vont lire le fichier de propriétés personnalisées à la place de standard. Mais j'ai des problèmes avec ça, ça lit toujours l'application par défaut. et hibernate.properties.
Le vouloir le faire afin d'avoir différentes propriétés de hibernate.ddl-auto pour le test. Mais quand j'exécute le test, je vois que Spring lit les propriétés de hibernate.properties qui se trouve dans le dossier de ressource (j'ai volontairement fait une faute de frappe dans ce fichier afin d'obtenir une exception si elle était lue par Spring). Mais pourquoi lit-il ce fichier même lorsque j'utilise @TestPropertySource
?
Je vois qu'il y a quelque chose que je ne sais pas à ce sujet, mais quoi? package src/test/java/com.guard/daoCréer un test de démarrage Spring avec application.properties séparée
@RunWith(SpringRunner.class)
@DataJpaTest
@Rollback
public class LifeguardDaoTest {
@Autowired
private LifeguardDao lgDao;
@Test
public void selectTest(){
for (Lifeguard lg :lgDao.getAll()) {
System.out.println(lg);
}
}
}`
classe de configuration de test est au contexte de configuration package src/test/java/com.guard
@SpringBootApplication
@EntityScan(value = {"com.guard.dao","com.guard.model"})
@TestPropertySource(value = {"classpath:application-test.properties", "classpath:hibernate-test.properties"})
public class TestConfiguration {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(TestConfiguration.class, args);
String[] beanNames = ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
System.out.println("Spring boot test generated " + beanNames.length + " beans");
}
}
test-Application Obligatoire. propriétés et hibernate-test.properties sont sur src/test/java chemin
structure du projet est ici (ne savent plus comment concevoir ici, désolé)
|src
|--main
|----java
|------com.guard
|----------configuration
|-------------GuardApplication.class (@SpringBootApplication,requires default props)
|--test
|----java
|------application-test.properties
|-------hibernate-test.properties
|-----com.guard
|-------TestConfiguration.class
|-------dao
|---------LifeguardDaoTest.class
Mes application-test.properties `
spring.jpa.properties.hibernate.use_sql_comments=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.HSQLDialect
spring.jpa.hibernate.show_sql=false
spring.jpa.hibernate.format_sql=true
spring.jpa.hibernate.hbm2ddl-auto=create
# even in case if it won`t use "spring.jpa" prefix
hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.show_sql=true
hibernate.format_sql=true
`