[SPRING] @RunWith 및 @ContextConfiguration 주석이 달린 jUnit 테스트에서 Spring 컨텍스트에 액세스하는 방법?
SPRING@RunWith 및 @ContextConfiguration 주석이 달린 jUnit 테스트에서 Spring 컨텍스트에 액세스하는 방법?
다음과 같은 테스트 클래스가 있습니다.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest {
@Autowired
MyService service;
...
}
이러한 메소드 중 하나에서 services-test-config.xml에 프로그래밍 방식으로 액세스 할 수 있습니까? 처럼:
ApplicationContext ctx = somehowGetContext();
해결법
-
==============================
1.테스트가 스프링 빈처럼 인스턴스화되기 때문에 ApplicationContextAware 인터페이스를 구현하면된다.
테스트가 스프링 빈처럼 인스턴스화되기 때문에 ApplicationContextAware 인터페이스를 구현하면된다.
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"/services-test-config.xml"}) public class MySericeTest implements ApplicationContextAware { @Autowired MyService service; ... @Override public void setApplicationContext(ApplicationContext context) throws BeansException { // Do something with the context here } }
-
==============================
2.이것은 잘 작동합니다.
이것은 잘 작동합니다.
@Autowired ApplicationContext context;
-
==============================
3.테스트 클래스가 Spring JUnit 클래스를 확장한다면 (예 : AbstractTransactionalJUnit4SpringContextTests 또는 AbstractSpringContextTests를 확장하는 다른 클래스) getContext () 메소드를 호출하여 앱 컨텍스트에 액세스 할 수 있습니다. org.springframework.test 패키지의 javadoc을 확인하십시오.
테스트 클래스가 Spring JUnit 클래스를 확장한다면 (예 : AbstractTransactionalJUnit4SpringContextTests 또는 AbstractSpringContextTests를 확장하는 다른 클래스) getContext () 메소드를 호출하여 앱 컨텍스트에 액세스 할 수 있습니다. org.springframework.test 패키지의 javadoc을 확인하십시오.
-
==============================
4.SpringClassRule을 이용하여 ApplicationContext 클래스의 인스턴스를 삽입 할 수있다. 및 SpringMethodRule 규칙. 당신이 사용하고 싶다면 매우 편리 할 것입니다. 또 다른 비 스프링 주자. 다음은 그 예입니다.
SpringClassRule을 이용하여 ApplicationContext 클래스의 인스턴스를 삽입 할 수있다. 및 SpringMethodRule 규칙. 당신이 사용하고 싶다면 매우 편리 할 것입니다. 또 다른 비 스프링 주자. 다음은 그 예입니다.
@ContextConfiguration(classes = BeanConfiguration.class) public static class SpringRuleUsage { @ClassRule public static final SpringClassRule springClassRule = new SpringClassRule(); @Rule public final SpringMethodRule springMethodRule = new SpringMethodRule(); @Autowired private ApplicationContext context; @Test public void shouldInjectContext() { } }
from https://stackoverflow.com/questions/2425015/how-to-access-spring-context-in-junit-tests-annotated-with-runwith-and-context by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 프로그래밍 방식으로 Spring에서 속성 자리 표시자를 결정하는 방법 (0) | 2019.01.10 |
---|---|
[SPRING] JPA @OneToMany -> 부모 - 하위 참조 (외래 키) (0) | 2019.01.10 |
[SPRING] 스프링 보안 : 맞춤형 사용자 상세 정보 (0) | 2019.01.10 |
[SPRING] Spring Batch Admin을 기존 애플리케이션에 통합 (0) | 2019.01.10 |
[SPRING] Tomcat 서버에 스프링 부트 웹 응용 프로그램을 배포하는 방법 (0) | 2019.01.10 |