2016-09-29 2 views
1

JMS 사용으로 JUnit 테스트를 실행하려고합니다. JUnit 테스트에서 JBoss 또는 CDI 컨테이너와 같은 Application Server 외부에서 JMS를 사용할 수 있습니까?JUnit 테스트에서 JMS를 사용할 수 있습니까?

+0

왜 투표가 끝났습니까? 이것은 합리적인 질문입니다 – chrisl08

+0

@ chrisl08 대답은 좋습니다. 또는 ** 내장 된 브로커 **를 사용하여 조롱을 피할 수 있습니다. 이렇게하면 스텁이나 모의가없는 구성 요소/클래스 간의 통합을 테스트 할 수 있습니다. 실생활에 가깝습니다. –

답변

3

메시지를 보내고 소비하는 것이 JMS와 완전히 분리 되었다면 조롱 할 수 있습니다.

예 : "IMyClassSender"와 같은 인터페이스를 구현하는 클래스를 만들 수 있습니다. 실제 코드 (비 junit)에서이 클래스는 JMS에 메시지를 제출합니다. junit에서 입력을받는 클래스로 IMyClassSender를 구현하고 대신 JMS에 제출하면이를 사용자 클래스로 전달합니다.

다른 방법으로, 활성 MQ를 사용하는 경우 : - Arquillian (http://arquillian.org) 선택의 JavaEE 어플 환경 내에서 단위 및 통합 테스트를 실행 할 수 있습니다 - http://activemq.apache.org/how-to-unit-test-jms-code.html

+0

가능한 해결책으로 들립니다. JMS 조롱! activemq에 대한 질문은 JUnit에서 사용할 activemq 라이브러리를 프로젝트에 포함시켜야합니까? – user840930

+0

또한 ActiveMQ에서 ActiveMQ 서버를 실행하지 않아도됩니까? – user840930

+0

"EmbeddedActiveMQBroker"를 사용할 수 있기 때문에 실제로는 그렇지 않습니다 - 자세한 내용은 답변에 제공된 링크를 참조하십시오. –

0

은 또한 응용 프로그램이에 대한 서버를 사용하여 재고 할 수 있고 관리 앱 서버 라이프 사이클 자체.

+0

예, 답변은 가치가 있지만 Arquillian은 뉘앙스가 있습니다. 그 설정은 매우 복잡합니다. 그 성질은 각 테스트마다 "마이크로 배포"를 만드는 데 중점을 둡니다. 테스트 실행은 꽤 길었습니다. –

+0

더하기, 질문이 명확하게 나타남 "JUnit 테스트 응용 프로그램 서버 외부에서 JMS 사용" – chrisl08

+0

테스트 완료 후 자원을 해제하지 않는 Arquillian의 알려진 문제점도 있습니다. Jenkins와 같은 Continuous Deployment 환경에서 테스트를 실행할 계획이라면이 문제가 심각 할 수 있습니다. – user840930

관련 문제