Spring   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了java – 如何测试spring配置类?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个spring应用程序配置类,其中实例bean.

应用类:

@Configuration
@EnableAspectJAutoProxy
@EnableSpringDataWebSupport
@EnabletransactionManagement
@ComponentScan(basePackageClasses = Application.class)
@Propertysource(value = {"classpath:foo.properties"})
@EnableJpaRepositories(basePackageClasses = Application.class)
@EnableJpaAudiTing
public class Application {

    @Inject
    private Environment env;

    @Bean
    JndiTemplate jndiTemplate() {
        return new JndiTemplate();
    }

    @Bean
    public Datasource datasource() {        
        Datasource datasource = getDatasource();
        if (datasource == null) {
            datasource = new BasicDatasource();
            ((BasicDatasourcE) datasourcE).setUsername(env.getProperty("jdbc.user"));
            ((BasicDatasourcE) datasourcE).setpassword(env.getProperty("jdbc.password""));

            ((BasicDatasourcE) datasourcE).setDriverClassName(env.getProperty("jdbc.driverClassName"));
            ((BasicDatasourcE) datasourcE).setUrl(env.getProperty("jdbc.url"));
        }
        return datasource;
    }

    @Bean
    public PlatformtransactionManager transactionManager() {
        EntitymanagerFactory factory = entitymanagerFactory().getObject();
        return new JpatransactionManager(factory);
    }

    //....
}
@H_945_1@mvcConfiguration类:

@Configuration
@ComponentScan(basePackageClasses = Application.class,includeFilters = @Filter({Controller.class,Component.class}),useDefaultFilters = truE)
class MvcConfiguration extends WebMvcConfigurationSupport {
    private static final String messaGES = "classpath:/i18n";

    private static final String VIEW_PREFIX = "/WEB-INF/views/";

    @Inject
    private Environment env;

    @Override
    public requestMappingHandlerMapping requestMappingHandlerMapping() {
        requestMappingHandlerMapping requestMappingHandlerMapping = super.requestMappingHandlerMapping();
        requestMappingHandlerMapping.setUseSuffixPatternMatch(false);
        requestMappingHandlerMapping.setUseTrailingSlashMatch(true);

        return requestMappingHandlerMapping;
    }

    @Bean(name = "messagesource")
    public messagesource messagesource() {
        ReloadableresourceBundlemessagesource messagesource = new ReloadableresourceBundlemessagesource();
        messagesource.setBasename(messaGES);
        messagesource.setCacheSeconds(5);

        return messagesource;
    }

    @Override
    public void addresourceHandlers(resourceHandlerRegistry registry) {
        registry.addresourceHandler("/static/").addresourceLOCATIOns("/static/**");
    }

    @Bean
    public MultipartResolver filterMultipartResolver(){
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        resolver.setMaxUploadSize(Long.parseLong(env.getProperty("multipart.max.size")));
        return resolver;
    }

    //....

}

和SecurityConfiguration类:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = truE)
class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Bean
    public passwordEncoder passwordEncoder() {
        return new BCryptpasswordEncoder();
    }


    //....

    @Override
    protected void configure(httpSecurity http) throws Exception {
        //logout por POST con el valor de token csrf
        http.authorizerequests()
                .antMatchers("/static/**").permitAll()
                .anyrequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
                .failureUrl("/login?error=1")
                .loginProcessingUrl("/authenticate")
                .and()
            .logout()
                .logoutUrl("/logout")
                .logoutsuccessUrl("/signin")
                .permitAll();
    }

}

我如何用JUnit测试它们?如何测试bean是在spring上下文中创建的?

最佳答案
我相信这只能通过集成测试来实现.

单元测试的目的不是检查整个Spring Context是否成功创建.

您可以使用模拟等测试单元测试的每个配置方法,以检查它们是否正常,但整个Spring Context事物是一个集成测试.

我通过执行Spring Docs所谓的“Spring Unit Test”(对我而言更像是控制器视图的集成测试)来进行此配置测试

我们的想法是,如果您可以为Controller集成测试运行Spring Context,那么您的配置就可以了.

关于如何进行这种测试的春季文档有一整章.
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/testing.html

大佬总结

以上是大佬教程为你收集整理的java – 如何测试spring配置类?全部内容,希望文章能够帮你解决java – 如何测试spring配置类?所遇到的程序开发问题。

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

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