Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

420
Views
@DataMongoTest() no funciona - lanzamiento Causado por: org.springframework.beans.factory.NoSuchBeanDefinitionException

Estoy usando la función de transacción de MongoDB, estoy usando Spring Boot 2.3.5.RELEASE . Estoy escribiendo una prueba unitaria para las clases de controlador para la prueba de integración. Me enfrento a la siguiente excepción. Por favor, ayúdame. Déjame saber dónde estoy haciendo mal.

 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

Proporciono a continuación el código correspondiente.

A continuación se muestra la clase de configuración.

 @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 { }

A continuación se muestra la prueba para el controlador.

 @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); } }

Por favor, ayúdame a resolver. También he visto que @DataMongoTest falla debido a UnsatisfiedDependencyException . No hay respuesta para eso.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Después de luchar durante muchas horas, finalmente encontré la solución. Puede ser útil para alguien. Publico el código aquí.

 @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); } }

La clase de clase TestMongoDBConfig se ve así.

 @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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!