[SPRING] Junit을 사용하여 Spring 테스트 세션 범위 bean
SPRINGJunit을 사용하여 Spring 테스트 세션 범위 bean
HTTP 세션 당 사용자 데이터를 보유하는 세션 범위 bean이 있습니다. Session scope bean을 테스트하기 위해 Junit 테스트 케이스를 작성하고 싶다. 빈이 세션 당 생성된다는 것을 증명할 수 있도록 테스트 케이스를 작성하고 싶습니다. 그러한 Junit 테스트 케이스를 작성하는 방법에 대한 모든 포인터?
해결법
-
==============================
1.단위 테스트에서 요청 및 세션 범위를 사용하려면 다음을 수행해야합니다.
단위 테스트에서 요청 및 세션 범위를 사용하려면 다음을 수행해야합니다.
다음과 같은 것 (테스트를 실행하기 위해 Spring TestContext를 사용한다고 가정) : abstractSessionTest.xml :
<beans ...> <bean class="org.springframework.beans.factory.config.CustomScopeConfigurer"> <property name="scopes"> <map> <entry key="session"> <bean class="org.springframework.web.context.request.SessionScope" /> </entry> <entry key="request"> <bean class="org.springframework.web.context.request.RequestScope" /> </entry> </map> </property> </bean> </beans>
.
@ContextConfiguration("abstractSessionTest.xml") public abstract class AbstractSessionTest { protected MockHttpSession session; protected MockHttpServletRequest request; protected void startSession() { session = new MockHttpSession(); } protected void endSession() { session.clearAttributes(); session = null; } protected void startRequest() { request = new MockHttpServletRequest(); request.setSession(session); RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request)); } protected void endRequest() { ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).requestCompleted(); RequestContextHolder.resetRequestAttributes(); request = null; } }
이제 테스트 코드에서 다음 메소드를 사용할 수 있습니다.
startSession(); startRequest(); // inside request endRequest(); startRequest(); // inside another request of the same session endRequest(); endSession();
-
==============================
2.나는이 간단한 접근법을 접했고, 다른 사람들이 필요로 할 수 있도록 여기에 게시 할 수있을 것이라고 생각했습니다.
나는이 간단한 접근법을 접했고, 다른 사람들이 필요로 할 수 있도록 여기에 게시 할 수있을 것이라고 생각했습니다.
<bean class="org.springframework.beans.factory.config.CustomScopeConfigurer"> <property name="scopes"> <map> <entry key="session"> <bean class="org.springframework.context.support.SimpleThreadScope"/> </entry> </map> </property> </bean>
이 방법을 사용하면 요청 / 세션 객체를 조롱 할 필요가 없습니다.
출처 : http://tarunsapra.wordpress.com/2011/06/28/junit-spring-session-and-request-scope-beans/
-
==============================
3.Spring 3.2 및 그 이후 버전은 통합 테스팅을위한 세션 / 요청 범위 Bean 지원
Spring 3.2 및 그 이후 버전은 통합 테스팅을위한 세션 / 요청 범위 Bean 지원
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = TestConfig.class) @WebAppConfiguration public class SampleTest { @Autowired WebApplicationContext wac; @Autowired MockHttpServletRequest request; @Autowired MockHttpSession session; @Autowired MySessionBean mySessionBean; @Autowired MyRequestBean myRequestBean; @Test public void requestScope() throws Exception { assertThat(myRequestBean) .isSameAs(request.getAttribute("myRequestBean")); assertThat(myRequestBean) .isSameAs(wac.getBean("myRequestBean", MyRequestBean.class)); } @Test public void sessionScope() throws Exception { assertThat(mySessionBean) .isSameAs(session.getAttribute("mySessionBean")); assertThat(mySessionBean) .isSameAs(wac.getBean("mySessionBean", MySessionBean.class)); } }
참고 문헌 :
from https://stackoverflow.com/questions/5136944/spring-test-session-scope-bean-using-junit by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring JPA와 persistence.xml (0) | 2018.12.30 |
---|---|
[SPRING] Spring과 Hibernate로 작업 할 때 persistence.xml이 필요합니까? (0) | 2018.12.30 |
[SPRING] 개인 생성자가있는 Java Spring bean (0) | 2018.12.30 |
[SPRING] @Transactional을 말할 때마다 체크 된 모든 예외에서 롤백 (0) | 2018.12.30 |
[SPRING] .properties 파일의 속성을 기반으로 Spring 설정 파일을 가져옵니다. (0) | 2018.12.30 |