2013-05-07 12 views
5

간단한 Guava EventBus에 간단한 이벤트 하나와 간단한 수신기 하나가 있습니다. 내 질문은 일단 이벤트가 게시되면 리스너 메소드가 호출되는지 점검 할 테스트 패턴이 무엇인가하는 것입니다.Guava EventBus unit tests

답변

14

EventBus가 제대로 작동하는지 테스트하는 것은 UNIT 테스트가 아니어야합니다. 라이브러리를 사용하는 장점 중 하나는 (적어도 신뢰하는 라이브러리를 사용하는 경우) 라이브러리 테스트 공급자가 라이브러리 테스트를 작성했기 때문입니다. 따라서 Google 직원이 EventBus를 올바르게 작성했는지 확인하는 데 시간을 낭비하지 마십시오. 시스템의 단위 테스트를 작성하려면 EventBus를 조롱해야하므로 리스너가 호출되지 않습니다. 이것은 메시지 버스를 사용하는 장점 중 하나이며 별도의 애플리케이션 문제를 격리 할 수 ​​있으므로 단위 테스트가 쉬워집니다.

준비가되면 전체 시스템이 함께 작동하는지 테스트하는 통합 테스트가됩니다. 어떤 경우에는 JUnit으로 작성 될 수도 있지만 단위 테스트라고 생각하지는 않습니다. 이렇게하는 방법은 시스템에 따라 다릅니다. Spring 컨텍스트를 JUnit 테스트로로드하거나 애플리케이션을 배치하고 테스트를 실행할 수 있습니다.

+2

코드가 조건부로 EventBus에 게시되는 경우 테스트하는 동안 EventBus가 실제로 올바른 매개 변수로 원하는 이벤트를 시작했는지 확인할 수 있어야합니다. –

2

이러한 종류의 테스트는 보통 Mockito과 같은 조롱 프레임 워크를 사용하여 수행됩니다. 모의 리스너를 만들고, 이벤트 버스에 등록하고, 이벤트를 발생시키고, 리스너 메소드가 호출되었는지 확인하십시오.

모의어를 만드는 방법과 모의 대화를 확인하는 방법에 대한 매우 기본적인 예제를 찾으십시오. here

+0

나는 mockito를 알고 있는데, 나는 이런 경우에 사용할 수 있다는 것을 몰랐다. 나는 그것에 대해 생각합니다. 많은 사람들. – speedingdeer

+2

잘 모르겠습니다 - EventBus는 조롱 한 객체에 없을 수도있는 @Subscribe 주석에 대해 등록 된 객체를 검사합니다. – PaulJWilliams

관련 문제