저는 을 의존성 관리 도구로 사용하는 우리의 주요 제품의 빌드 프로세스에 Cobertura을 통합하기 시작했습니다. 테스트 사례가없는 여러 라이브러리 lib-a
, lib-b
및 lib-c
이 있으며 이러한 라이브러리에 의존하고 이러한 라이브러리에 대한 단위 및 통합 테스트가 포함 된 프로젝트가 하나 있습니다.Cobertura와 Ivy가 함께 일하는 방법?
일반적으로 계장 된 테스트를 실행하고 Cobertura 보고서를 생성하는 것은 작동합니다. (10)보고 몇 가지 경고가 계측 동안
: 그러나, 몇 가지 문제가 있습니다
Problems instrumenting archive entry: a.b.c.MyClassFoo java.lang.RuntimeException: java.lang.ClassNotFoundException: a.b.c.MyClassBar
그러나보고 된 클래스는 소재 기존됩니다. 계측의 끝에서, 그것은
Saved information on 364 classes
- 보고서를 보는, 모든 클래스를 보여줍니다보고하지만 의존 libs와의 모든 클래스는 0 %의 범위로보고됩니다.
- 세부 정보를 볼 때 발견 된 곳이 없음을보고합니다. 내 빌드에서 jar 파일에서
인스 트루먼 개미 작업을 소스를 얻기 - jar 파일과 로 제공 클래스 파일을 인스트루먼트 -
는 지금은 Cobertura는 에 문제가 있는지, 문제가있을 것 같아요. xml은 다음을 수행합니다.
<cobertura-instrument todir="${build.dir}/instrumented-classes">
<includeClasses regex="com\.mycompany.*" />
<instrumentationClasspath>
<path refid="default.test.classpath" />
<pathelement location="${build.classes.dir}" />
</instrumentationClasspath>
</cobertura-instrument>
충분해야합니까?
임보고 된 경고 때문에 궁금합니다. 모든보고 된 클래스는 항아리에서 찾을 수 있습니다.
두 번째 문제를 들어, 난
내가<cobertura-report destdir="${build.dir}/coverage">
<fileset dir="${src.dir}">
<include name="**/*.java" />
</fileset>
<ivy:cachefileset conf="runtime-test" type="sources"/>
</cobertura-report>
을 시도 ... cobertura-보고서 항아리와 같은 소스를 제공하는 방법을 몰라하지만
cachefileset
이 지원되지 않습니다 말한다. 또한
cobertura-report
에 제공 할 수없는
pathid
을 사용해 보았습니다. 전에 모든 소스의 압축을 풀어야합니까? (시간이 많이 걸릴 수 있습니다) 보통의
fileset
으로 제공합니까?