2010-05-05 2 views
4

주간 유지 관리를 위해 스테이징 서버가 중단되면 여러 가지 통합 테스트가 실패합니다. 스테이징 서버가 다운되면 우리는 통합 테스트에서 감지 할 수있는 특정 응답을 보냅니다. 테스트를 실패하는 대신이 응답을 얻었을 때 실행을 시작했지만 테스트를 건너 뛰거나 무시할 수 있는지 궁금합니다. 이것은 우리의 테스트 리포트를 조금 더 깨끗하게 유지할 것입니다.JUnit 테스트 메소드 자체에서 테스트를 무시하는 방법

아무나 제안 사항이 있습니까? 테스트는 Assert.whatever을 수행하기 전에이 조건을 테스트 할 수에서

답변

11

잠시 그것을있었습니다하지만 조건이 참 Assume하는 방법은 없습니다? 나는 이것이 시험 합격/불합격과는 다른 의미라고 생각합니다. 보고서에는 테스트가 실행되지 않았 음이 표시되어야합니다.

편집 추가 할 : 통합 테스트 및 순수 단위 테스트 : Assume class

0

. 테스트가 실패하면 나머지 코드/어설 션을 실행하지 않고 메소드에서 리턴합니다. 내가 JUnit을 사용하기 때문에

0

가장 간단한 솔루션은 두 개의 스위트 룸들로 테스트를 분할하는 것입니다. 그런 다음 스크립트 나 다른 자동화 된 방법을 개발하여 서버가 가동 중인지 여부를 확인하고 서버가 다운 된 경우 통합 테스트를 건너 뛰십시오. 그러나이 같은 테스트 스위트를 어떤 이유로 그룹화하지 않으면 다음과 같은 대안이 있습니다.

서버를 사용할 수없는 경우 테스트를 건너 뛰는 사용자 정의 Runner을 만들 수 있습니다. 러너가 독자적으로 서버 가용성을 결정하거나 테스트 단계 이전에 실행되는 스크립트와 같은 외부 프로세스를 통해 러너를 결정할 수 있으며 주자가 확인할 수있는 JVM에 시스템 특성을 설정합니다 (예 : -Dcom.company.testrun.integration=false을 명령으로 전달하십시오 라인 인수).

통합 테스트 클래스의 @RunWith 주석을 사용하여 사용자 지정 러너를 활성화하고 다른 모든 테스트에 기본 제공 러너를 사용할 수 있으므로 영향을받지 않습니다. 또는 에 대한 모든 러너를 사용하여 테스트를 수행하고 통합 테스트 방법을 장식하는 데 사용하는 새로운 주석 (예 : @IntegrationTest)을 만들 수 있습니다. 후자의 접근 방식을 사용하면 서버가 사용할 수없는 경우에만 러너가 건너 뛰기 로직을 ​​적용합니다. 테스트 메소드에 특수 주석이 있습니다.

관련 문제