스프링 부트마다 1개의 @Configuration 클래스를 덮어씁니다@Test
스프링 부트 어플리케이션에서 1개만 덮어쓰려고 합니다.@Configuration테스트 설정이 있는 클래스(특히 my class)@EnableAuthorizationServer @Configuration모든 시험에 합격했어요.
지금까지 스프링 부트 테스트 기능과 스프링 통합 테스트 기능을 개략적으로 소개한 결과, 다음과 같은 간단한 솔루션이 등장하지 않았습니다.
@TestConfiguration: 오버라이드가 아닌 확장용입니다.@ContextConfiguration(classes=…)그리고.@SpringApplicationConfiguration(classes =…)1개의 클래스뿐만 아니라 설정 전체를 덮어씁니다.- 이너
@Configuration내부 클래스@Test디폴트 설정을 덮어쓸 것을 권장합니다만, 예시는 기재되어 있지 않습니다.
좋은 의견이라도 있나?
내부 테스트 구성
테스트의 내부 @Configuration 예:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SomeTest {
@Configuration
static class ContextConfiguration {
@Bean
@Primary //may omit this if this is the only SomeBean defined/visible
public SomeBean someBean () {
return new SomeBean();
}
}
@Autowired
private SomeBean someBean;
@Test
public void testMethod() {
// test
}
}
재사용 가능한 테스트 구성
여러 테스트에서 테스트 구성을 재사용할 경우 스프링 프로파일을 사용하여 스탠드아론 구성 클래스를 정의할 수 있습니다.@Profile("test")그런 다음 테스트클래스를 통해 프로파일을 활성화 합니다.@ActiveProfiles("test"). 완전한 코드 참조:
@RunWith(SpringRunner.class)
@SpringBootTests
@ActiveProfiles("test")
public class SomeTest {
@Autowired
private SomeBean someBean;
@Test
public void testMethod() {
// test
}
}
@Configuration
@Profile("test")
public class TestConfiguration {
@Bean
@Primary //may omit this if this is the only SomeBean defined/visible
public SomeBean someBean() {
return new SomeBean();
}
}
@프라이머리
그@Primarybean 정의에 대한 주석은 두 개 이상이 발견될 경우 이 주석에 우선 순위가 부여되도록 하기 위한 것입니다.
- 테스트 구성에 주석을 달다
@Profile("test"). - 프로덕션 구성에 주석을 달기 위해
@Profile("production"). - 속성 파일에서 프로덕션 프로파일 설정:
spring.profiles.active=production. - 테스트 클래스의 테스트 프로파일을 설정하려면
@Profile("test").
따라서 응용 프로그램을 시작할 때는 "생산" 클래스를 사용하고 테스트 스타를 시작할 때는 "테스트" 클래스를 사용합니다.
inner/nested를 사용하는 경우@Configurationclass 응용 프로그램의 기본 구성 대신 사용됩니다.
최근에 어플리케이션의 개발 버전을 만들어야 했습니다.이 버전은dev명령줄 arg 없이 바로 사용할 수 있습니다.이 문제를 해결하려면 이 클래스를 새 엔트리로 추가합니다.이 엔트리는 액티브프로파일을 프로그래밍 방식으로 설정합니다.
package ...;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.Import;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.StandardEnvironment;
@Import(OriginalApplication.class)
public class DevelopmentApplication {
public static void main(String[] args) {
SpringApplication application =
new SpringApplication(DevelopmentApplication.class);
ConfigurableEnvironment environment = new StandardEnvironment();
environment.setActiveProfiles("dev");
application.setEnvironment(environment);
application.run(args);
}
}
자세한 내용은 Arvind Rai의 Spring Boot Profiles 예를 참조하십시오.
언급URL : https://stackoverflow.com/questions/39041542/override-a-single-configuration-class-on-every-spring-boot-test
'programing' 카테고리의 다른 글
| AngularJS에서 지시문을 작성할 때 새 스코프, 새 하위 스코프 또는 새 격리 스코프가 필요하지 않은지 어떻게 결정합니까? (0) | 2023.03.13 |
|---|---|
| Python 오류: TypeError: 'Timestamp' 형식의 개체가 JSON 직렬화 가능이 아닙니다. (0) | 2023.03.13 |
| Wordpress ACF get_field()가 값을 반환하지 않습니다. (0) | 2023.03.08 |
| 변수가 javascript에서 typeed 배열인지 확인하는 방법 (0) | 2023.03.08 |
| JavaScript를 사용하여 파일 다운로드 시작 (0) | 2023.03.08 |