모든 Spring Configurations를 Java 코드로 이동하는 중입니다. 필자는 이제 명령 줄 스위치 또는 메이븐 프로파일 등을 기반으로 어떤 프로파일을 사용하고 싶은지에 대한 문제를 겪었습니다 ... 또한 각 테스트마다 같은 주석을 모두 사용하지 않으려합니다 수업. 이것은 웹 애플리케이션이 아니라 오히려 기능적 테스트 스위트입니다. 내 테스트를 실행하려고 할 때Java Spring ApplicationContext Configuration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CompanyApplicationContextInitializer.class)
는하지만, 내 autowire가 조각이 위치한되지 않는 :
public class CompanyApplicationContextInitializer
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(final ConfigurableApplicationContext applicationContext) {
final AnnotationConfigApplicationContext rootContext = new AnnotationConfigApplicationContext();
rootContext.getEnvironment().setActiveProfiles(System.getProperty("spring.profile.active", "local"));
rootContext.register(LocalConfiguration.class, SauceLabsConfiguration.class);
}
}
가 그럼 난 내 테스트는 다음과 같이 주석이 있습니다
여기 내 시도이다. 나는 바른 길을 가고 있는가? 어떻게하면이 클래스에서 와이어를 프로그래밍하여 ApplicationContext를 설정할 수 있습니까? 두 번째 주석에 앱 컨텍스트 XML의 위치를 추가
모든 구성 옵션을 정의한 기본 테스트 클래스가 없기를 바랬지 만 현재 선택 사항이없는 것처럼 보입니다. 어느 프로파일이 각 테스트 클래스 (여기서는 JVM 속성으로 쉽게 수행 됨)에 활성화되어있는 것을 피할 수 있기를 바랬지 만 ContextConfiguration 주석을 각 테스트 클래스에 배치하지 않아도되도록하고 싶었습니다. 그래서 그것을 기본 레벨 테스트로 옮기면 그 문제가 완화 될 것입니다. – Scott
@ActiveProfiles 주석은 기본 클래스에서 사용할 수 있으며 모든 하위 클래스에 적용됩니다. 또한이 주석은 inheritLocations라고하는 속성을 포함하여 여러 가지 속성을가집니다. Javadoc을 보라. –