web-dev-qa-db-fra.com

Configuration du package de base pour l'analyse des composants dans le test de démarrage Spring

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?

8
ElArbi

Vous pouvez ajouter une classe TestConfig dans votre package de test:

@Configuration
@ComponentScan({ "com.hello.package.p1", "com.hello.package.p2" })
public class TestConfig {
}
2
Ortomala Lokni

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]"));
        }
    }
1
user2560347