Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

421
Visualizações
@DataMongoTest() is not working - throwing Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException

I am using MongoDB transaction feature, I am using Spring Boot 2.3.5.RELEASE. I am writing unit test for controller classes for integration test. I am facing the following exception. Please help me. Let me know where I am doing wrong.

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.app.rain.resources.ValidationCategoryController' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1717) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1273) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
    ... 71 common frames omitted

I provide below the relevant code.

Below is the configuration class.

@EnableAutoConfiguration(exclude={ SecurityAutoConfiguration.class, DataSourceAutoConfiguration.class, 
        RedisAutoConfiguration.class,
RedisRepositoriesAutoConfiguration.class, MongoAutoConfiguration.class, 
        SecurityFilterAutoConfiguration.class, SecurityAutoConfiguration.class })
@SpringBootApplication(scanBasePackages = { "com.app.rain"}, exclude={SecurityAutoConfiguration.class})
public class Test1Config {

}

Below is the Test for the controller.

@ActiveProfiles("test")
@DataMongoTest()
//@ExtendWith(SpringExtension.class)
//@ContextConfiguration(classes = ValidationApplication.class)

@ContextConfiguration(classes = {
        Test1Config.class,
    })
@ImportAutoConfiguration(TransactionAutoConfiguration.class)
public class Test0 {
    @Autowired
    private ValidationCategoryController controller;
    
    @Autowired
    @Qualifier("validations")
    private ValidationService vldnService;
    
    @Test
    void testAllValidationsBeforeEntry() {
        System.out.println("controller : " + controller);
        assertEquals(true, true);
    }
}

Please help me to resolve. I have also seen this @DataMongoTest fails because of UnsatisfiedDependencyException. There is no answer for that.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

After struggling for many hours, I finally found the solution. It may be helpful for someone. I post the code here.

@DataMongoTest(excludeAutoConfiguration = {SecurityAutoConfiguration.class,
        RedisAutoConfiguration.class, MongoDBTxnConfiguration.class,
        RedisRepositoriesAutoConfiguration.class, 
        SecurityFilterAutoConfiguration.class, 
        SecurityAutoConfiguration.class})
@Profile("test")
@ActiveProfiles("test")
@ComponentScan(basePackages = {"com.app.rain"}, excludeFilters={
          @ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, 
                  value= {MongoDBTxnConfiguration.class,SecurityCloudConfig.class})})
@Import(TestMongoDBConfig.class)
public class Test0 {
    @Autowired
    private ValidationCategoryController controller;
    
    @Autowired
    @Qualifier("validations")
    private ValidationService vldnService;
    
    @Test
    void testAllValidationsBeforeEntry() {
        System.out.println("controller : " + controller);
        assertEquals(true, true);
    }
}

The class TestMongoDBConfig class looks like this.

@Profile("test")
@ActiveProfiles("test")
@Configuration
public class TestMongoDBConfig implements InitializingBean, DisposableBean {

    private MongodExecutable executable;

    
    @Override
    public void afterPropertiesSet() throws Exception {

        IFeatureAwareVersion version = de.flapdoodle.embed.mongo.distribution.Versions
                .withFeatures(new GenericVersion("4.0.0"), Version.Main.PRODUCTION.getFeatures());
        IMongoCmdOptions cmdOptions = new MongoCmdOptionsBuilder().useNoPrealloc(false).useSmallFiles(false)
                .master(false).verbose(false).useNoJournal(false).syncDelay(0).build();
        int port = Network.getFreeServerPort();
        IMongodConfig mongodConfig = new MongodConfigBuilder().version(version)
                .net(new Net(port, Network.localhostIsIPv6())).replication(new Storage(null, "testRepSet", 5000))
//            .configServer(true)
                .configServer(false).cmdOptions(cmdOptions).build();
        MongodStarter starter = MongodStarter.getDefaultInstance();
        executable = starter.prepare(mongodConfig);
        executable.start();
    }

    
    @Primary
    @Bean(name = "test1")
    public MongoClient mongoClient() {
        MongoClient mongoClient = MongoClients.create();
        return mongoClient;
    }

    @Override
    public void destroy() throws Exception {
        executable.stop();
    }
}
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda