2016-07-04 61 views
8

我刚发现Spring有一个调试模式,它提供了有关自动配置的见解。对于服务器,可以通过将--debug作为应用程序参数进行启用。如何在测试中启用Spring的自动配置报告?

有没有办法启用调试模式也用于测试(用SpringJUnit4ClassRunner执行)?


如果自动配置报告工作,它应该打印输出一些像这样的:

========================= 
AUTO-CONFIGURATION REPORT 
========================= 


Positive matches: 
----------------- 

    ConfigServiceBootstrapConfiguration#configServicePropertySource matched 
     - matched (OnPropertyCondition) 

    ConfigurationPropertiesRebinderAutoConfiguration matched 
     - @ConditionalOnBean (types: org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor; SearchStrategy: all) found the following [org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor] (OnBeanCondition) 

    ConfigurationPropertiesRebinderAutoConfiguration#configurationPropertiesBeans matched 
     - @ConditionalOnMissingBean (types: org.springframework.cloud.context.properties.ConfigurationPropertiesBeans; SearchStrategy: current) found no beans (OnBeanCondition) 

    ConfigurationPropertiesRebinderAutoConfiguration#configurationPropertiesRebinder matched 
     - @ConditionalOnMissingBean (types: org.springframework.cloud.context.properties.ConfigurationPropertiesRebinder; SearchStrategy: current) found no beans (OnBeanCondition) 

    EncryptionBootstrapConfiguration matched 
     - @ConditionalOnClass classes found: org.springframework.security.crypto.encrypt.TextEncryptor (OnClassCondition) 

    PropertyPlaceholderAutoConfiguration#propertySourcesPlaceholderConfigurer matched 
     - @ConditionalOnMissingBean (types: org.springframework.context.support.PropertySourcesPlaceholderConfigurer; SearchStrategy: current) found no beans (OnBeanCondition) 


Negative matches: 
----------------- 

    ConfigServiceBootstrapConfiguration.RetryConfiguration did not match 
     - required @ConditionalOnClass classes not found: org.springframework.retry.annotation.Retryable,org.aspectj.lang.annotation.Aspect (OnClassCondition) 

    DiscoveryClientConfigServiceBootstrapConfiguration did not match 
     - @ConditionalOnProperty missing required properties spring.cloud.config.discovery.enabled (OnPropertyCondition) 

    EncryptionBootstrapConfiguration.RsaEncryptionConfiguration did not match 
     - @ConditionalOnClass classes found: org.springframework.security.rsa.crypto.RsaSecretEncryptor (OnClassCondition) 
     - Keystore nor key found in Environment (EncryptionBootstrapConfiguration.KeyCondition) 

    EncryptionBootstrapConfiguration.VanillaEncryptionConfiguration did not match 
     - required @ConditionalOnMissing classes found: org.springframework.security.rsa.crypto.RsaSecretEncryptor (OnClassCondition) 

    EurekaDiscoveryClientConfigServiceBootstrapConfiguration did not match 
     - @ConditionalOnClass classes found: org.springframework.cloud.config.client.ConfigServicePropertySourceLocator (OnClassCondition) 
     - @ConditionalOnProperty missing required properties spring.cloud.config.discovery.enabled (OnPropertyCondition) 


Exclusions: 
----------- 

    None 


Unconditional classes: 
---------------------- 

    None 

回答

15

--debug设置一个debug财产然后在自动配置交换机的报告。您可以在您的测试中使用例如@TestPropertySource对您的测试类进行相同的测试:

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(Application.class) 
@TestPropertySource(properties = "debug=true") 
public class YourTests { 
    // … 
}