2013-02-21 6 views
2

내 Mule 흐름 및 프로세서 용 테스트 사례 작성으로 시작했습니다.test.timeoutSecs 속성이 혼란스럽고 일관된 결과를 제공하지 않습니다.

이 부분에서는 "setUp"메서드에서 "mule.test.timeoutSecs"속성을 설정하여 각 테스트 메서드가 더 많은 시간이 걸리지 않도록 시도했습니다.

그러나 이것은 약간의 혼란스러운 결과를 보여줍니다.

속성을 3 초로 설정했습니다.

첫 번째 테스트 방법은 9 초 이상 실행되었지만 여전히 성공적입니다.

두 번째 방법은 3000 밀리 초 후에 타임 아웃됩니다.

세번째 시험 방법

3000 밀리 초 후에 예외를이 시간 초과

org.mule.retry.RetryPolicyExhaustedException: Could not create Transport. Reason: javax.management.InstanceAlreadyExistsException: org.apache.activemq:BrokerName=localhost,Type=Broker 
at org.mule.retry.policies.AbstractPolicyTemplate.execute(AbstractPolicyTemplate.java:105) 
..... 
Caused by: javax.jms.JMSException: Could not create Transport. Reason: javax.management.InstanceAlreadyExistsException: 

4 방법이다 던지고 못했다.

여기에 내용이 누락 된 경우 알려주십시오.

아래 이미지는 각 테스트 방법에 소요 된 시간과 함께 테스트 요약을 보여줍니다.

Snapshot of my test run

+0

테스트가'org.mule.tck.junit4.FunctionalTestCase'를 확장합니까? 'setUp'은 시스템 프로퍼티를 설정하기에는 너무 늦었고,'@ BeforeClass'가 더 좋을 것입니다. 또한 글로벌 테스트 타임 아웃을 다루는 이유는 테스트 IMO의 경우 매우 이상한 디자인입니다. 보통 'MuleClient'를 통해 동기식 상호 작용 시간이 초과됩니다. –

+0

예 내 테스트 케이스가 FunctionalTestCase를 확장하고 있습니다. – user1760178

답변

3

org.mule.tck.junit4.FunctionalTestCase을 사용하는 경우 테스트 클래스 생성자 또는 @BeforeClass 정적 메서드에서 mule.test.timeoutSecs을 설정하십시오.

1

이클립스는 테스트에 소요되는 시간에 설치/해체에 소요되는 시간이 포함됩니다. @Before/@After 인 경우 테스트 시간에 포함됩니다. 따라서 첫 번째 테스트에 오래 걸리는 설정이있는 경우이 작업이 포함됩니다.

그러나 시간 제한은 @Before/@After이 아닌 테스트 방법 자체에만 적용됩니다.

또한/AfterClass 인 경우 IIRC는 시간에 포함됩니다 (첫 번째/마지막 테스트에만 해당).

이를 테스트하려면 테스트에 다음과 같은 라인을 추가 할 수 있습니다

@Test public void testMe() { 
    long now = new Date().getTime(); 

    // test 
    System.out.println("time taken =" + (new Date().getTime() - now) + " millis"); 
} 

이 당신을 말할 것이다 시간이 소요되는 경우입니다 정말 @Before/@After에.

관련 문제