程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring JUnit Test未加载完整的应用程序上下文大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring JUnit Test未加载完整的应用程序上下文?

开发过程中遇到Spring JUnit Test未加载完整的应用程序上下文的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring JUnit Test未加载完整的应用程序上下文的解决方法建议,希望对你解决Spring JUnit Test未加载完整的应用程序上下文有所启发或帮助;

您需要按以下方式注释测试类@ActiveProfiles;否则,您的Application配置类将始终被 禁用 。因此,您当前看不到中列出了任何自己的bean ApplicationContext

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@ActiveProfiles(Constants.SPRING_PROfile_DEVELOPMENT)
public class MongoDbRepositoryTest { /* ... */ }

此外,Application应使用@Configuration别人提到的注释。

解决方法

嗨,我正在尝试Springjunit测试用例&Hellip;,我需要加载完整的应用程序上下文。但是,junit测试不会初始化完整的应用程序上下文。

测试类别:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class MongoDbRepositoryTest {

    @Value("${spring.datasource.url}")
    private String databaseUrl;

    @Inject
    private ApplicationContext appContext;

    @Test
    public void TESTCRUD() {
        System.out.println("spring.datasource.url:" + databaseUrl);
        showBeansIntialised();
        assertEquals(1,1);
    }

    private void showBeansIntialised() {
        System.out.println("BEEEAAANSSSS");
        for (String beAnname : appContext.getBeanDefinitionNames()) {
            System.out.println(beanName);
        }
    }

输出:

spring.datasource.url:${spring.datasource.url}
BEEEAAANSSSS
org.springframework.context.Annotation.internalConfigurationAnnotationProcessor
org.springframework.context.Annotation.internalAutowiredAnnotationProcessor
org.springframework.context.Annotation.internalrequiredAnnotationProcessor
org.springframework.context.Annotation.internalCommonAnnotationProcessor
org.springframework.context.Annotation.internalPersistenceAnnotationProcessor
org.springframework.context.Annotation.ConfigurationClassPostProcessor.importAwareProcessor
org.springframework.context.Annotation.ConfigurationClassPostProcessor.enhancedConfigurationProcessor

主要应用类别注释:

@ComponentScan(basePackages = "com.test")
@EnableAutoConfiguration(exclude = { MetricFilterAutoConfiguration.class,MetricRepositoryAutoConfiguration.class })
@EnableMongoRepositories("com.test.repository.mongodb")
@EnableJpaRepositories("com.test.repository.jpa")
@Profile(Constants.SPRING_PROFILE_DEVELOPMENT)
public class Application { ...

因此,它应该扫描包com.test中的所有spring
bean,并将它们加载到Junit测试用例的applicationcontext中。但是从启动的bean的输出来看,它似乎没有这样做。

大佬总结

以上是大佬教程为你收集整理的Spring JUnit Test未加载完整的应用程序上下文全部内容,希望文章能够帮你解决Spring JUnit Test未加载完整的应用程序上下文所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。