Lorsque je lance mon test avec les annotations suivantes:
package com.hello.package.p1;
@RunWith(SpringRunner.class)
@DataMongoTest
@SpringBootTest
public class ClassATest {
@Autowired
Service1 serivce1; //fqn = com.hello.package.p1.Service1
@Autowired
Service2 serivce2; //fqn = com.hello.package.p2.Service2
...}
package com.hello.package.p1;
@ActiveProfiles("test")
@SpringBootConfiguration
public class MongoTestConfig {
...
}
service1 sera injecté. Mais service2 ne le sera pas, car il ne se trouve pas dans le même package que la classe de test. Je reçois une erreur:
Dépendance insatisfaite exprimée par le champ "service2"; l'exception imbriquée est org.springframework.beans.factory.NoSuchBeanDefinitionException
Comment puis-je dire à mon contexte de test que je veux charger/analyser un certain package, par exemple com.hello
?
Vous pouvez ajouter une classe TestConfig
dans votre package de test:
@Configuration
@ComponentScan({ "com.hello.package.p1", "com.hello.package.p2" })
public class TestConfig {
}
Bon pour ajouter la configuration de test ci-dessus, j'ai ce qui suit dans la configuration de test et tout cas de test. Je suis nouveau dans le test de démarrage de printemps, mais cela fonctionne. Faites-moi savoir, si je me trompe.
@Configuration
@ComponentScan("au.some.spring.package")
public class TestConfig {
}
@RunWith(SpringRunner.class)
@EnableAutoConfiguration
@SpringBootTest(classes= TestConfig.class)
@TestPropertySource({"classpath:application.yml",
"classpath:env-${testing.env}.properties"})
public class DBDmoTest {
@Autowired
PartyRepository partyRepository;
@Test
public void test(){
Assert.assertNull(partyRepository.findByEmailIgnoreCase("[email protected]"));
}
}