[SPRING] Spring JUnit 테스트에서 자동 모의 인스턴스 생성
SPRINGSpring JUnit 테스트에서 자동 모의 인스턴스 생성
통합 테스트를 작성하고자하는 Spring XML bean 정의가있다. XML bean 정의는
내 통합 테스트를 위해 독립 실행 형 정의를 인스턴스화하고 다른 모든 빈에 대해 Mockito 모의를 사용하고 싶습니다. 지금까지는 다음과 같은 것을 사용하고 있습니다.
FooIntegrationTest.java
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class FooIntegrationTest {
@Autowired private ClassUnderTest underTest;
@Autowired private MockedClass mock;
@Test
public void testFoo() {
}
}
FooIntegrationTest-context.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:c="http://www.springframework.org/schema/c"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<import resource="part-to-test.xml" />
<bean id="mockedClassReferencedByName" class="org.mockito.Mockito" factory-method="mock" c:classToMock="SomeMockedClass" />
<bean class="org.mockito.Mockito" factory-method="mock" c:classToMock="OtherMockedClassReferencedByType" />
<bean class="org.mockito.Mockito" factory-method="mock" c:classToMock="MockedClass" />
...
</beans>
오히려 지루한 조롱 섹션을 자동화하고 싶습니다. 이상적으로, 응용 프로그램 컨텍스트에서 찾을 수없는 모든 bean을 자동으로 조롱하게하고 싶습니다. part-to-test.xml은 이름 참조를 사용하여 설정된 빈뿐만 아니라 @Autowired를 사용합니다. XML Bean 정의 파일 만 사용하며 @Configuration 클래스 나 @Component 주석을 사용하지 않습니다.
@ContextConfiguration (loader = ...)에서 사용자 정의 컨텍스트 로더를 사용하는 방법을 살펴 보았습니다. 그러나 그렇게하기위한 적절한 확장 점을 아직 찾지 못했습니다. Sprinockito이 문제를 해결하지 않는 것 같습니다.
이미이 문제를 해결 한 다른 프로젝트가 있습니까? 그렇지 않다면 자동으로 mock을 만들기 위해 Spring을 어디에서 확장할까요?
해결법
-
==============================
1.다음은 코드 예제가 담긴 짧은 기사입니다. BeanDefinitionRegistryPostProcessor 구현은 부족한 각 빈 정의에 대한 모의 객체를 생성합니다. 생성 부분은 MocksFactory로 수행되며, 여기에 그러한 팩토리의 예제가 있습니다.
다음은 코드 예제가 담긴 짧은 기사입니다. BeanDefinitionRegistryPostProcessor 구현은 부족한 각 빈 정의에 대한 모의 객체를 생성합니다. 생성 부분은 MocksFactory로 수행되며, 여기에 그러한 팩토리의 예제가 있습니다.
-
==============================
2.누구든지이 질문에 관심이있는 경우 Yves Martin이 언급 한 코드에서 상속, @Inject 등의 지원을 확장했으며 여기 Github 프로젝트를 만들었습니다. https://github.com/ 리노 토 / 스프링 오토 모크
누구든지이 질문에 관심이있는 경우 Yves Martin이 언급 한 코드에서 상속, @Inject 등의 지원을 확장했으며 여기 Github 프로젝트를 만들었습니다. https://github.com/ 리노 토 / 스프링 오토 모크
from https://stackoverflow.com/questions/10247297/automatic-mock-instantiation-in-a-spring-junit-test by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 부트 이해 @Autowired (0) | 2019.04.05 |
---|---|
[SPRING] @SpringBootApplication을 STS의 유형으로 확인할 수 없습니다. (0) | 2019.04.05 |
[SPRING] Spring에 다중 트랜잭션 관리자가있는 다중 데이터 소스 (0) | 2019.04.04 |
[SPRING] 타입 검증을 가진 Spring getBean (0) | 2019.04.04 |
[SPRING] 특정 클래스 로더와 함께 Spring 컨텍스트로드하기 (0) | 2019.04.04 |