Maven 프로젝트를 Gradle로 마이그레이션 할 때 코드 커버리지 플러그인 Clover에 문제가 있습니다. 나는 커버리지 계산에 대해 설명 할 수없는 행동을한다. 간단한 예를 보자 : ProjectA
및 ProjectB
: 나는 2 개의 다른 프로젝트를Maven과 Gradle간에 클로버 코드 적용 범위 동작이 다릅니다
// ProjectA
class A
{
void method1()
{
// Some stuff
// This method is covered by a unit test in ProjectA
}
void method2()
{
// Some stuff
// This method is not covered by any unit test in ProjectA
}
}
// ProjectB
class B
{
void method3()
{
new A().method2();
// Some stuff
// This method is covered by a unit test in ProjectB
}
}
. ProjectB
은 ProjectA
에 따라 다릅니다.
ProjectA
에는 A
이라는 클래스가 있습니다. 에서 얻은 단위 테스트는 ProjectA
에 포함되어 있습니다. method2
은 ProjectA
에 포함 된 테스트가 적용되지 않습니다.
ProjectB
에는 B
이라는 클래스가 있습니다. B
에서 method3
은 ProjectB
에 포함 된 단위 테스트가 적용됩니다. method3
은 A
클래스의 method2
을 ProjectA
에 호출합니다.
사실 : 메이븐와 클로버 (공식 플러그인)와
,이 호출이 테스트가 다른 프로젝트에있는 경우에도 단위 테스트에 포함하는 방법 (method3
) 출신으로 method2
이 포함 된 것으로 간주한다. ProjectA
에는 전용 테스트가 없으므로 Gradle and Clover (unofficial plugin)를 사용하면 method2
이 발견 된 것입니다.
Maven과 Gradle Clover Plugin 사이의 구성에는 차이가 없습니다.
내 질문 :
클로버의 정상적인/기본 동작은 무엇입니까? 구성을 통해이 동작을 설정할 수 있습니까? 아니면 Gradle Clover 플러그인에 이런 종류의 버그가 있습니까?
는 클로버에 묶여 있는가? 내 의견으로는 [JaCoCo] (https://docs.gradle.org/current/userguide/jacoco_plugin.html)는 클래스 파일을 조작하지 않고도 (자바 에이전트를 사용하여) 즉석에서 악기를 연주하기 때문에 클로버보다 우수합니다. 그래 플 빌드를위한 사실상의 표준입니다. –
하지만 Powermock에서는 작동하지 않는 계측이 작동하지 않습니다. https://github.com/powermock/powermock/wiki/Code-coverage-with-JaCoCo – ToYonos
Hehe ... so switch [mockito] (http://site.mockito.org) 너무 ... (반 농담, 반나절!) –