2017-12-15 4 views
0

'SourcePollingChannelAdapter'에 의해 트리거되는 로직 체인을 어설 션하기 위해 스프링 테스트를 어떻게 작성할 수 있을지 궁금합니다. 내 마음에 오는 어떤스프링 통합 : 폴러 종속 로직 테스트

:

  • 사용에 Thread.sleep() 정말
  • 내가 직접 사람과 모든 CF- 폴 가능 채널을 대체 할 스프링 컨텍스트의 또 다른 테스트 버전이 테스트를 위해 좋은 생각이다. 이것은 많은 작업이 필요합니다.

트리거 폴러를 테스트 중에 강제로 수행하는 일반적인 방법이 있습니까?

답변

1

일반적으로 우리는 QueueChannel 테스트를 사용하며 메시지는 receive(10000) 방법을 통해 대기합니다. 이렇게하면 데이터 소스와 독립적으로 테스트 메소드 스레드가 데이터가 도착할 때까지 차단됩니다.

SourcePollingChannelAdapterTaskScheduler에 의해 트리거되므로 전체 흐름 논리는 테스트 메서드와 별도의 스레드로 수행됩니다. 채널 교체에 대한 귀하의 아이디어가 도움이되지 않습니다. Thread.sleep()은 가치가있을 수 있지만 QueueChannel.receive(10000)은 실제로 신뢰할 수 있습니다. 실제로는 최대 10 초 동안 대기하기 때문입니다.

테스트 케이스를 차단하는 또 다른 방법은 CountDownLatch 표준에서 나옵니다. countDown()을 테스트 방법에서 기다리면됩니다.

테스트 할 다른 방법이 있습니다. 반복 사이에 짧은 수면 기간의 루프가 있고 종료 및 확인을위한 일부 조건을 확인하십시오. 결국 폴러와 데이터베이스의 경우 유용 할 수 있습니다. 따라서 원하는 상태가 될 때까지 루프에서 SELECT를 수행합니다.

Reference Manual에서 몇 가지 추가 정보를 찾을 수 있습니다.

관련 문제