2011-12-15 8 views
2

통합 테스트 스위트를 grails test-app -integration과 함께 실행하면 모든 테스트가 통과됩니다. 그러나, 나는 grails test-app로를 실행할 때, 단위 테스트를 통과하지만, 통합 테스트가 오류와 함께 실패 : 이제Grails 통합 테스트가 'grails test-app'로 실행될 때만 실패합니다

Cannot set readonly property: requestAttributes for class: 
org.springframework.web.context.request.RequestContextHolder 

, 나는 RequestContextHolder의 모든 인스턴스를 검색 한과 자리를 찾을 수 없어 이 부분은 테스트/앱에 의해 설정됩니다.

제 질문은 통합 테스트 만 실행하는 것과 테스트 스위트를 실행하는 것의 차이점은 무엇입니까? 이전 테스트에서 registerMetaClass이 호출되지 않았기 때문에 테스트가 실패하는 인스턴스로 실행되었지만 전체 스위트이므로이 상황이 다르게 보입니다.

답변

2

이것은 시험 오염과 같습니다.

단 하나의 단위 테스트와 하나의 통합 테스트를 실행하려고합니다. 실패하면 다른 단위 테스트로 전환하고 실패하는지 확인하십시오. 단 하나의 단위 테스트로 실행되는 경우 단위 테스트가 잘못되어 통합 테스트를 통해 일괄 적으로 실행하여 실패의 원인을 파악할 수 있습니다.

내가 이런 종류의 일을 할 수있는 다른 방법은 프로젝트를 소스 제어하에 둔다면 테스트가 모두 통과 된 것으로 알려진 좋은 버전으로 되돌리고 모든 테스트가 계속 실행되는지 확인하는 것입니다. . 당신의 환경에서 뭔가있을 수 있습니다. 실행되면 팁의 절반 정도 개정판으로 가서 시도하십시오. 범위를 좁힐 때까지 수동 바이너리 검색을 계속하십시오.

gitmercurial have a built in feature called "bisect" 모두 수동으로 업데이트 할 필요없이 오류의 원인이 된 정확한 개정판을 검색 할 수 있습니다. 다른 RCS를 사용 중이라면 비슷한 RCS가있을 수 있습니다.

+0

감사합니다. Ted, 내일 저기로 드리겠습니다. 방금 프로젝트에 참여 했으므로 테스트가 얼마나 오랫동안 중단되었는지 (또는 그 문제가 있었는지 여부) 확실하지 않습니다. – Igor

+1

좋아요! 그게 너에게 효과적이라고 나는 기뻐. 비슷한 문제가 여러 번 발생했지만 테스트가 개별적으로 실행될 때마다 테스트 오염이 거의 항상 발생합니다. –

관련 문제