문제

나는 개미 빌드에서 Maven으로 몇 개의 프로젝트를 마이그레이션하고 있습니다. 빌드 서버는 허드슨입니다.

나는 Cobertura와 함께 Hudson에서 코드 범위를 기록하는 데 어려움을 겪고 있습니다. 테스트는 실행되고 기록되었습니다.

이 프로젝트는 다중 모듈이며 코드 커버리지 데이터의 집계 된 출력을 필요로는 아니지만 필요하지는 않습니다.

대체로, 내가 찾고있는 솔루션은 다음과 같습니다.

  • 모든 모듈에 대한 자동 테스트를 실행하고 결과를 기록하십시오. 한 번;
  • 개별 모듈 코드 커버리지를 표시합니다 허드슨에서;
  • 쉽게 구성 할 수 있습니다 전체 프로젝트를 위해 한 번, 모든 모듈에 있지 않습니다.

솔루션은 Cobertura 또는 Emma 또는 기타 Java 코드 커버리지 도구를 기반으로 할 수 있습니다.


업데이트: Emma로 테스트를 실행하면 결과가 여전히 복제되며 merge 기능이므로 다중 모듈 빌드에서는 실제로 사용할 수 없습니다.

도움이 되었습니까?

해결책

소나 Hudson과 쉽게 통합되는 매우 멋진 도구입니다. 저는 여러 모듈 프로젝트를 통해 조직을 좋아합니다. 당신은 그것을 시도해야합니다

Alt Text http://sonar.codehaus.org/wp-content/uploads/2009/08/dashboard.png

다른 팁

약간 해킹되지만 제가 사용하는 접근 방식은 사용하는 것입니다. Maven Cobertura 플러그인의 수정 된 버전 (그게 그들의 repo에서 사용할 수 있습니다). Cobertura : Generate-Report Target을 제공하므로 Cobertura : Instrument 및 Cobertura : 테스트 실행 전후의 라이프 사이클에 각각 생성을 삽입 할 수 있습니다. 이를 통해 중복 테스트 실행/녹화없이 원하는 적용 범위 데이터가 제공됩니다.

근본적인 문제는 내가 실행하는 모든 비 클로버 Maven 커버리지 플러그인이 Maven 라이프 사이클의 주요 테스트 실행과 별도로 커버리지를 사용하여 테스트를 실행한다는 아이디어를 중심으로 구축된다는 것입니다. 이것은 분명히 두 세트의 테스트 실행을 초래합니다. 프리 스타일 프로젝트를 사용하는 경우 하나의 테스트 세트 만 기록 할 수 있습니다 (두 번의 테스트 실행이 있더라도 테스트 출력 사본이 하나뿐이므로 Maven 프로젝트 유형은 실제로 Maven Mojo 실행을 가로 채고 있습니다. 프리 스타일 프로젝트와 마찬가지로 빌드의 끝에서 한 번에 모든 것이 아니라 테스트 실행 시간에 테스트 출력/결과를 기록합니다. 이것은 많은 장점이 있지만, 단일 테스트가 두 번 실행되는 것이 두 번의 테스트로 계산된다는 단점이 있습니다.

즉, 비 계급 및 계측 코드 모두에 대한 테스트를 실행하는 것에 대한 강력한 주장을 보았지만 Maven/Hudson 문제뿐만 아니라 도구 코드에 대해 한 번만 테스트를 실행하는 것을 선호합니다. VE는 45 분이 걸리는 테스트를 받았으며, 동일한 결과를 생성하기 위해 두 번 실행하는 것이 솔직히 어리석은 것 같습니다.

로버트,

나는이 문제를 겪었고 Maven2 프로젝트가 아닌 프리 스타일 프로젝트로 프로젝트를 설정하면 Hudson이 두 배로보고하지 않는다는 것을 발견했습니다. 당신은 Maven2 프로젝트를 갖는 데 큰 도움이되었지만, 우리에게는 우리가해야 할 거래였습니다.

제프

우리는 무료 스타일 프로젝트를 사용하고 있으며이 문제가 없으므로 지적한 바와 같이, 이것이 귀하의 문제의 원인 일 수 있습니다.

병합 기능을 제공하기 위해 자체 아티팩트 리포지토리를 만들었습니다 (Maven을 사용하지 않음). 각 빌드의 끝에서 Cobertura.ser 파일을 네트워크 공유에 복사하여 프로세스에서 이름을 바꿉니다. 우리는 모든 cobertura 파일과 소스 코드 파일 (네트워크 공유에 복사 된 다른 빌드 아티팩트)을 로컬 빌드 디렉토리에 복사하고 Cobertura 보고서를 생성하는 통합보기 작업이 있습니다.

허드슨 내에 표준 아티팩트 저장소의 부족은 약간 실망 스럽지만 저자가 일반적으로 이러한 요구에 Maven을 사용하는 것은 의미가 있습니다. 우리의 빌드 프로세스는 여러 서버를 통해 실행되므로 다른 작업 디렉토리에 상대 경로를 사용할 수 없습니다.

테스트 결과, Javancs, ECT와 같은 다른 메트릭에 대해서도 동일한 작업을 수행합니다. 올바른 도구 또는 일부 사용자 정의 코드를 사용하여 결합했습니다.

우리는 DLL, 항아리, 설치 스크립트와 같은 전통적인 빌드 아티팩트에 동일한 저장소를 사용합니다.

멋진 GUI가있는 매우 낮은 오버 헤드 도구는 SD Java 테스트 커버리지를 참조하십시오. "두 번 실행"문제를 이해하지 못하지만 SD 도구를 사용하여 (동일한 결정 론적) 테스트를 두 번 실행하면 동일한 테스트 범위 데이터 (예 : Idempotent)를 얻을 수 있습니다. 테스트가 비 결정적이면 두 가지 다른 테스트 실행을 얻을 수 있지만 이러한 도구는 여러 번의 전체 요약으로 쉽게 병합됩니다.

또한 매우 큰 응용 프로그램을 처리하고 여러 스레드 애플리케이션을 잘 처리합니다 (작은 타이밍 파편은 이론적으로는 대답을 약간 부정확하게 만들 수 있지만, 이것은 단순히 문제가되지 않습니다).

당신은 고려 했습니까? 아틀라 시안의 클로버?

Maven-Clover2-Plugin은 새로운 목표를 가지고 있습니다. Clover2 : 설정 수명주기를 포킹하거나 테스트를 두 번 실행하지 않고도 테스트를 도구로 만듭니다.

Hudson에서 실행하는 목표를 다음과 같이 정의 할 것입니다.

mvn clover2:setup verify clover2:aggregate clover2:clover

Maven-Clover2-Plugin은 30 일 동안 무료로 시도 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top