아마 당신의 최선의 방법을 사용하는 것입니다 여기에
내가 가진 무엇
Spring Profiles . 게시물의
ResourceConfig
을 '프로덕션'구성으로 표시 할 수 있으며 테스트의 경우 '테스트'프로필이있는
ResourceConfig
을 새로 만들 수 있습니다. 그런 다음 테스트에서 단지
"test"
에 활성 프로파일을 설정하고 생산, (위의 링크에서 언급 한 바와 같이) 또한 재산의 구성 파일에서 활성 프로파일을 설정할 수 있습니다
"production"
@Profile("production")
@Configuration
@ApplicationPath("/some/path")
public class MyJerseyConfiguration extends ResourceConfig {
public AnalyzerJerseyConfiguration() {
packages(BaseController.class.getPackage().getName());
register(AuthorizationRequestFilter.class);
register(AuthorizationResponseFilter.class);
}
}
@Profile("test")
@Configuration
@ApplicationPath("/some/path")
public class TestConfiguration extends ResourceConfig {
public AnalyzerJerseyConfiguration() {
packages(BaseController.class.getPackage().getName());
register(TestRequestFilter.class);
register(TestResponseFilter.class);
}
}
@ActiveProfiles("test")
@RunWith(SpringJUnit4ClassRunner.class)
public class TestClass {}
에 활성 프로파일을 설정합니다.
다른 테스트에 다른 구성을 사용하려는 경우 ResourceConfig
하위 클래스를 만드는 대신 여러 가지 스프링 구성을 만드는 것이 좋습니다. 다른 구성에 대해 @Bean
메쏘드를 만들면됩니다.
@Profile("test")
@Configuration
public class TestOneConfig {
@Bean
public ResourceConfig resourceConfig() {
return new ResourceConfig()
.register(Something.class);
}
}
@Profile("test")
@Configuration
public class TestTwoConfig {
@Bean
public ResourceConfig resourceConfig() {
return new ResourceConfig()
.register(DifferentSomething.class);
}
}
어느 것이 든 사용하려는 테스트 구성에 추가하십시오.
@ActiveProfiles("test")
@SpringApplicationConfiguration(classs={MainApp.class, TestOneConfig.class})
public class TheTest {}
Spring Boot 1.4와
(아직 발표되지 않음)
는, 그들은
ResourceConfigCustomizer
을 소개합니다. 이것은 "테스트"
ResourceConfig
을 만들 필요없이, 그것을 조금 청소기 만들 수도, 당신은 테스트 구성이를
@Component
public class TestCustomizer implements ResourceConfigCustomizer {
@Override
public void customize(ResourceConfig config) {
config.getClasses().remove(AuthorizationRequestFilter.class);
config.register(TestRequestFilter.class);
}
}
처럼 뭔가를하고 등록 할 수 있습니다.
예. 고맙습니다. 실제로 스프링 프로파일 (거의)을 사용 했으므로 제대로 작동하는 것처럼 보입니다. 유일한 차이점은 @ActiveProfiles 주석을 사용하지 않았지만 대신 application.properties 파일에서 * spring.profiles.active * 속성을 사용한다는 것입니다. 고맙습니다. 사람 –