2015-03-12 16 views
7

Mam klasę ConfigurationProperties i chcę przetestować ją za pomocą junit. Ale obiekt jest zawsze null. Czego może brakować w poniższym kodzie?Jak przetestować ConfigurationProperties na wiosnę z JUnit?

@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(); 
    } 
} 

Odpowiedz

9

Poniższa załaduje go dla Ciebie:

@ContextConfiguration(classes = Application.class, initializers = ConfigFileApplicationContextInitializer.class) 
Powiązane problemy