2012-11-17 2 views
0

는 EJB @Schedule을 테스트합니다 :어떻게 이메일 데몬 작업을 수행하기 위해 EJB 일정을 사용하고

@Schedule(hour="8, 10, 12, 14, 16, 18") 
    public void sendExpirationReminders() { 
} 
내가 실행중인 서버에이 방법을 테스트 할 수있는 방법

?

현재 실제 브라우저 요청을 할 수 있도록 대부분의 테스트에 HtmlUnit을 사용하고 있습니다. 하지만 나는이 데몬 메소드의 내부 내용을 테스트하는 방법을 놓치고 있습니다.

답변

2

짧은 대답은 : 할 수 없습니다.

사람들이 제안하는 것은 (나는 동의 함) 실제로 작업을 수행하는 코드와 일정을 구분하는 코드를 분리하는 것입니다. 이 작업을 수행하면 @Schedule 주석이있는 클래스 하나가 생기며 작업을 수행하는 클래스를 호출해야합니다.

왜 이것을 테스트 할 수 있습니까? 쉽습니다. 응용 프로그램 서버에서 날짜 (또는 시계)를 조롱 할 수 없습니다.

+0

너무 나쁘지 않습니다. 나는 소프트웨어를 분석하고 그것이 얼마나 그럴듯한지를 볼 것이다. –

+0

그것에 대한 진절머리 나는 부분은 @Schedule을 수행하는 EJB에도 MailSender, VelocityEngine 등과 같은 많은 주입 된 리소스가 있다는 것입니다. 그것은 정말로 논리를 분리해야하는 실수입니다. –

+0

모든 @Scheduled 메서드를 사용하여 Cron이라는 클래스를 만들고이 클래스에서 이미 가지고있는 메서드를 호출 할 수 있습니다. – Augusto

관련 문제