2012-10-17 2 views
0

JUnit4에 문제가 있으며 @Test(timeout=xxx) 주석이 있습니다. 예를 들어, 두 개의 동일한 신체, 다른 이름으로 테스트합니다. 그들 중 누구도 초기화 할 수있는 전역 변수를 사용하지 않습니다.
테스트를 실행할 때 완전히 다른 실행 시간 (첫 번째 테스트 0,811 초, 두 번째 0,143)이 있습니다.JUnit4 - '동일한'테스트 케이스에 대한 다른 시간 초과

나는 비슷한 결과를 얻는 것이 매우 중요합니다. 이 문제를 해결할 수있는 방법이 있습니까?

+3

테스트를 볼 수 있다면 쉽게 도움이 될 것입니다. –

답변

1

JUnit이 클래스를 초기화하는 데 소요되는 설치 시간이 포함되므로 첫 번째 테스트가 오래 걸린 것으로보고 될 가능성이 큽니다. 대략 같은 시간 내에 실행해야하는 2 개의 테스트가있는 경우 다른 두 테스트보다 세 번째 테스트를 추가하여 초기화 작업을 방해하지 않는 것이 좋습니다.

내가 제대로 작동하는지 궁금한 점이 있으면 알려주세요.

+0

예, 당신 말이 맞아요. 고마워요. JUnit 라이브러리의 거친 동작이므로 클래스 초기화 시간이 메소드 실행 시간에 영향을주지 않아야합니다. – cslysy

+0

JUnit에서는 테스트 메소드 호출의 순서가 보장되지 않습니다. 주문을 정확히 지정하려면 http://stackoverflow.com/questions/3089151/specifying-an-order-to-junit-4-tests-at-the-method-level-not-class-level을 읽어보십시오. –

0

대신 시간 초과 규칙을 사용해보십시오. 클래스는 제한 시간 규칙이 적용되기 전에 초기화되므로 클래스 초기화 시간은 이어야을 제외해야합니다.

관련 문제