2015-03-12 10 views
7

Ich habe eine ConfigurationProperties Klasse und möchte es mit junit testen. Aber das Objekt ist immer null. Was könnte im folgenden Code fehlen?Wie kann ich ConfigurationProperties im Frühling mit JUnit testen?

@EnableAutoConfiguration 
@ComponentScan 
@EnableConfigurationProperties(MyProperties.class) 
public class AppConfig { 

} 

@Service 
public class MyService { 
    @Autowired 
    private MyProperties props; 

    public void run() { 
     props.getName(); 
    } 
} 

@Component 
@ConfigurationProperties(prefix = "my") 
public class MyProperties { 
    private String name; 
    //getter,setter 
} 

application.properties:

my.name=test 

Test:

@Configuration 
@ComponentScan(basePackageClasses = {MyService.class, MyProperties.class}, 
      includeFilters = @ComponentScan.Filter(value = {MyService.class, MyProperties.class}, 
      type = FilterType.ASSIGNABLE_TYPE), 
      lazyInit = true 
) 
@PropertySources(
     @PropertySource("application.properties") 
    ) 
class AppTest { 
    @Bean 
    public static PropertySourcesPlaceholderConfigurer propertiesResolver() { 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 
} 

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = ApplicationConfigTest.class) 
public class MyTest extends AbstractJUnit4SpringContextTests { 
    @Autowired 
    private MyService service; 

    @Test 
    public void testService() { 
     service.run(); 
    } 
} 

Antwort

9

Nachstehend es für Sie laden wird:

@ContextConfiguration(classes = Application.class, initializers = ConfigFileApplicationContextInitializer.class)