[英]Jacoco Showing Wrong Coverage check Result
我已經通過maven在我的項目中配置了Jacoco插件。
這是我的jacoco配置
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
<configuration>
<excludes>
</exclude>**/some/package/SomeClass*</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>jacoco-check</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rules>
<rule>
<element>CLASS</element>
<excludes>
<exclude>*Test</exclude>
</excludes>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>80%</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
</execution>
</executions>
</plugin>
我已經執行了Test,並顯示了抽象類的94%的覆蓋率,我使用了它的具體實現對其進行了測試。
當我通過maven build運行時
我收到以下錯誤
類my.package.AbstractParser.1違反了規則:行覆蓋率是0.00,但預期最小值是0.80
我嘗試在Test上使用虛擬實現來測試抽象類,但仍然遇到相同的錯誤
有人可以告訴我我在做什么錯。
編輯:我找出了失敗的原因
我已經寫了一個內聯地圖初始化
return new HashMap<String, String>() {
{
put(input, "");
}
};
相對於該部分,覆蓋率顯示為0%。 所以我的測試沒有涵蓋這部分。
可是我累了
final Map<String, String> defaultMap = new HashMap<>();
defaultMap.put(input, "");
return defaultMap;
構建過程甚至沒有覆蓋新代碼。 有人可以解釋一下為什么內聯初始化會發生嗎?
您的配置
<rules>
<rule>
<element>CLASS</element>
<excludes>
<exclude>*Test</exclude>
</excludes>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>80%</minimum>
</limit>
</limits>
</rule>
</rules>
表示每個類別的線路覆蓋率至少應為80%。
return new HashMap<String, String>() {
{
put(input, "");
}
};
聲明匿名類 ,JaCoCo報告中可見什么是BTW-請參見下面的屏幕快照的第一表行
而
final Map<String, String> defaultMap = new HashMap<>();
defaultMap.put(input, "");
return defaultMap;
不聲明任何類。
嘗試將其添加到您的gradle構建中
android {
testOptions {
unitTests {
all {
jvmArgs '-noverify'
}
}
}
}
測試和覆蓋率存在問題,因此您需要配置jvmArgs
設置以進行覆蓋率檢查,可以在IDE本身中啟用它,但是在CI / maven /中運行覆蓋率時,應在gradle中對其進行配置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.