반응형
@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();
이것도 잘 작동합니다.
@Autowired
ApplicationContext context;
테스트도 Spring bean처럼 인스턴스화되므로 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
}
}
xml 이외의 필요에 대해서는 다음을 수행할 수도 있습니다.
@RunWith(SpringJUnit4ClassRunner.class)
/* must provide some "root" for the app-context, use unit-test file name to the context is empty */
@ContextConfiguration(classes = MyUnitTestClass.class)
public class MyUnitTestClass implements ApplicationContextAware {
테스트 클래스가 Spring Junit 클래스를 확장하는 경우
(예:AbstractTransactionalJUnit4SpringContextTests다른 부류로 확대될 수 있습니다.AbstractSpringContextTests), 에 전화를 걸어 앱 컨텍스트에 접근할 수 있습니다.getContext()방법.
패키지 org.springframework.test에 대한 javadocs를 확인합니다.
다음과 같은 예를 주입하는 것이 가능합니다.ApplicationContext을 사용하여 수업을 하다SpringClassRule그리고.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() {
}
}
이 문제와 관련된 게시물을 하나 작성했는데, 이것은 자신감을 얻는 데 정말 도움이 됩니다.
@Test
void TestBeanLaunch()
{
context.run(it -> {
/*
* I can use assertThat to assert on the context
* and check if the @Bean configured is present
* (and unique)
*/
assertThat(it).hasSingleBean(PracticeApplication.class);
assertThat(it).hasSingleBean(PracticeApplication.TestBean.class);
assertThat(it.getBean("BeanTest")).isInstanceOf(PracticeApplication.TestBean.class);
});
}
언급URL : https://stackoverflow.com/questions/2425015/how-to-access-spring-context-in-junit-tests-annotated-with-runwith-and-context
반응형
'programing' 카테고리의 다른 글
| JS 클라이언트 측 Exif 방향:JPEG 이미지 회전 및 미러링 (0) | 2023.10.06 |
|---|---|
| 자바스크립트 - 파일 입력 컨트롤에서 파일명을 추출하는 방법 (0) | 2023.10.06 |
| Powershell에서 Start-Website 명령을 실행할 때 "파일을 만들 수 없습니다" 오류가 발생했습니다. (0) | 2023.10.06 |
| 각진 안전하지 않은 링크 (0) | 2023.10.06 |
| Oracle PL/SQL의 테이블 변수? (0) | 2023.10.01 |