什么是错误的我的@DataMongoTest - throw org.springframework.beans.fac



嗨,我正在使用MongoDB与Spring Boot 2.3.5的事务功能。发布版本。我得到以下异常。我正在用控制器类编写集成测试。

下面给出例外。

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'com.app.cat.resource.Test0': Unsatisfied dependency expressed through field 'controller'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.dell.pde.resources.NVTValidationCategoryController' 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.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) ~[spring-beans-5.2.10.RELEASE.jar:5.2.10.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPost

我提供下面的代码片段。

@Profile("test")
@ActiveProfiles("test")
@DataMongoTest(excludeAutoConfiguration = MongoDBTxnConfiguration.class)
@Import(TestMongoConfig1.class)
@EnableAutoConfiguration(exclude={ SecurityAutoConfiguration.class, DataSourceAutoConfiguration.class, RedisAutoConfiguration.class,
RedisRepositoriesAutoConfiguration.class,  
SecurityFilterAutoConfiguration.class, SecurityAutoConfiguration.class })
@SpringBootApplication(scanBasePackages = {"com.app.cat"})
public class Test0 {

@Autowired
private CategoryController controller;

@Autowired
@Qualifier("validations")
private ValidationService vldnService;

@Test
void testAllValidationsBeforeEntry() {
System.out.println("controller : " + vldnService);
assertEquals(true, true);
}
}

请告诉我我做错了什么。请帮帮我。

@DataMongoTest注释也使用@AutoConfigureDataMongo,@ImportAutoConfiguration。如果您提供自动配置的类,则会发生冲突。您必须使用@DataMongoTest来排除要加载和运行的其他类。因为它是一个Test类,所以不要使用@SpringBootApplication(scanBasePackages = {"com.app.cat"})。最后我提供了位代码片段,可能对您有所帮助。

@DataMongoTest(excludeAutoConfiguration = {SecurityAutoConfiguration.class, 
SecurityFilterAutoConfiguration.class, 
SecurityAutoConfiguration.class, ... <any other configuration>})
@Profile("test")
@ComponentScan(basePackages = {"com.app.cat"}, excludeFilters={
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, 
value= {MongoDBTxnConfiguration.class,SecurityCloudConfig.class})})
public class Test {
@Autowired
private YourControler ctrlr;


@Test
void test1() {
// Logic for testing
}
}

相关内容

最新更新