[SPRING] 하나의 컨텍스트에서 Spring bean을 다른 컨텍스트의 mock 버전으로 대체하십시오.
SPRING하나의 컨텍스트에서 Spring bean을 다른 컨텍스트의 mock 버전으로 대체하십시오.
시작하는 동안 응용 프로그램 컨텍스트 xml이 초기화되는 통합 테스트를 작성하고 있습니다. 테스트 클래스에는 특정 bean 'X'(이미 xml에 정의되어 있음)를 사용하는 몇 가지 테스트 메소드가 있습니다. 내 실제 요구 사항은 테스트 메소드 중 하나에 대해서만 bean X를 조롱하는 것이다.
테스트 메소드 내부 : ClassPathXMLApplicationContext를 사용하여 모의 빈 'M'만 사용하여 별도의 애플리케이션 컨텍스트를 만들려고했다.
이제 두 개의 응용 프로그램 컨텍스트 (AC)가 있습니다. 1. 테스트 케이스가 시작될 때 생성 된 하나의 bean (실제 bean X 포함)과 2. 테스트 메소드 (Mock bean M이 있음) 내에서 ClassPathXMLApplicationContext를 사용하여 생성 된 메소드.
AC : 2의 mock bean 정의 'M'을 사용하여 AC : 1 내의 실제 빈 정의 'X'를 대체하려고합니다.
누군가 제발 좀 비켜 줄래?
해결법
-
==============================
1.빈 페이지를 닫고 다시 새로 고치지 않는 한 새로 고친 ApplicationContext에서 빈을 대체하는 명확한 방법이 없습니다.
빈 페이지를 닫고 다시 새로 고치지 않는 한 새로 고친 ApplicationContext에서 빈을 대체하는 명확한 방법이 없습니다.
이를 에뮬레이션하기 위해 일반적인 접근법은 런타임에 대상을 바꾸고 변경하려는 빈의 프록시를 사용하는 것입니다.
프레임 워크 AOP 지원 클래스를 사용하면 쉽게 할 수 있습니다.
<bean id="realBean" class="RealClass" /> <bean id="mockBean" class="MockClass" /> <bean id="targetSource" class="org.springframework.aop.target.HotSwappableTargetSource"> <constructor-arg ref="realBean" /> </bean> <bean id="bean" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="targetSource" ref="targetSource" /> </bean>
@Test public void testWithMockBean() { Object real = targetSource.swap(mock); .... // do your test work ... targetSource.swap(real); }
-
==============================
2.할 수있는 일 :
할 수있는 일 :
그리고 나는 더 많은 옵션이 있다고 확신한다.
-
==============================
3.다음을 사용하여 테스트 응용 프로그램 컨텍스트 만들기
다음을 사용하여 테스트 응용 프로그램 컨텍스트 만들기
<beans> <import resource="classpath*:appContext.xml" /> <bean id="mockbeanOfX" class=....../> </beans>
이 테스트 애플리케이션 컨텍스트를 테스트 케이스에로드한다. 이제 응용 프로그램 컨텍스트에서 mock bean을 가져 와서 필요할 때마다 전달할 수 있습니다.
from https://stackoverflow.com/questions/12800769/replace-spring-bean-in-one-context-with-mock-version-from-another-context by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 왜 우리는 Data Jpa에서 질의를 위해 @Modifying 어노테이션을 사용해야 만 하는가? (0) | 2019.03.15 |
---|---|
[SPRING] Spring Hibernate 템플릿은 오라클의 계산 쿼리에서 어떤 객체 유형을 반환합니까? (0) | 2019.03.15 |
[SPRING] 404 오류가있는 봄 보안 문제가 있습니까? (0) | 2019.03.15 |
[SPRING] 봄 부팅 응용 프로그램에서 여러 데이터베이스에서 테이블이 생성되지 않음 (0) | 2019.03.15 |
[SPRING] SAML 메타 데이터 항목에 대한 서명 신뢰 설정 실패 (0) | 2019.03.15 |