我正在使用maven与JaCoCo插件生成failafe和surefire报告,但我只能设法将它们放在单独的报告中.我想有一个整体覆盖视图(单元测试和集成测试之间的合并).
在我认为彻底的谷歌搜索之后,我只能找到一种方法来与Sonar一起做.有没有更简单的方法来做到这一点?
相关问题:Maven分离单元测试和集成测试
code-coverage maven maven-surefire-plugin maven-failsafe-plugin jacoco
我试图通过使用代码覆盖工具(而不是静态代码分析工具)在我们的应用程序上找到死代码.我选择了JaCoCo,并且能够通过JaCoCo代理获得报告.
我知道Intellij IDEA与JaCoCo合作,但无论如何我都找不到将我的JaCoCo报告导入Intellij IDEA.有关如何做到这一点的任何想法?
谢谢
将启用更改为必需会在 gradle 7.5 中引发错误
> Configure project :
The Report.enabled property has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use the required property instead. See https://docs.gradle.org/7.5/dsl/org.gradle.api.reporting.Report.html#org.gradle.api.reporting.Report:enabled for more details.
jacocoTestReport {
reports {
- xml.enabled false
- csv.enabled false
- html.enabled true
+ xml.required false
+ csv.required false
+ html.required true
}
}
> Could not find method required() for arguments [false] on Report xml of type org.gradle.api.reporting.internal.TaskGeneratedSingleFileReport.
Run Code Online (Sandbox Code Playgroud) 嗨,我在运行JaCoCo报道时遇到以下异常:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.5.8.201207111220</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
Error while creating report: Can't add different class with same name: org/hamcrest/BaseDescription
java.lang.IllegalStateException: Can't add different class with same name: org/hamcrest/BaseDescription
at org.jacoco.core.analysis.CoverageBuilder.visitCoverage(CoverageBuilder.java:89)
at org.jacoco.core.analysis.Analyzer$1.visitEnd(Analyzer.java:79)
at org.objectweb.asm.ClassAdapter.visitEnd(Unknown Source)
at org.jacoco.core.internal.flow.ClassProbesAdapter.visitEnd(ClassProbesAdapter.java:128)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:94)
at org.jacoco.core.analysis.Analyzer.analyzeClass(Analyzer.java:115)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:155)
at org.jacoco.core.analysis.Analyzer.analyzeArchive(Analyzer.java:135)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:158)
at org.jacoco.core.analysis.Analyzer.analyzeAll(Analyzer.java:183)
at org.jacoco.maven.ReportMojo.createBundle(ReportMojo.java:280)
at org.jacoco.maven.ReportMojo.createReport(ReportMojo.java:256)
at org.jacoco.maven.ReportMojo.executeReport(ReportMojo.java:230)
at org.jacoco.maven.ReportMojo.execute(ReportMojo.java:208)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) …Run Code Online (Sandbox Code Playgroud) 我要求将我的selenium测试的代码覆盖率捕获到所涵盖的服务器代码(Web应用程序源代码)中的源代码量.
例如,登录功能的测试应该捕获登录功能的Web应用程序中涵盖的代码量.
否则,需要知道它已在Web应用程序代码中触及哪个包或类,以完成所使用的方案.例如登录
我找不到合适的解决方案,虽然我开始了解Jacoco代码覆盖工具并尝试使用Jacoco Jenkins插件的一些示例,但没有成功.
我不知道可能性.请提供给我一个如何实现这一点的建议,在此先感谢
我最近为Android Gradle插件尝试了新的Jacoco代码覆盖功能,不幸的是它使我的测试失败并出现以下错误:
java.lang.VerifyError: com/foo/bar/rest/SomeClass at
com.foo.bar.test.rest.BaseTest.setUp(BaseTest.java:87) at
android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) at
android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) at
android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at
android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
Run Code Online (Sandbox Code Playgroud)
我在build.gradle中使用这些行启用了代码覆盖:
buildTypes {
debug {
testCoverageEnabled = true
}
...
Run Code Online (Sandbox Code Playgroud)
有谁遇到过同样的问题?
我正在尝试生成Jacoco代码覆盖率报告.我已经在我的测试类中使用了AndroidTestCase.
我发现使用testCoverageEnabled为true并使用默认的android -studio默认jacoco,./ gradlew connectedCheck或createDebugCoverageReport创建成功/失败测试用例的百分比,但没有覆盖率报告.
然后我尝试了jacoco {toolVersion"0.7.1.201405082137"}和任务jacocoTestReport(类型:JacocoReport,dependsOn:"testDebug").我试图用各种任务来改变dependsOn值.该报告显示0(零)测试覆盖率,这是不可能的,因为至少有一半的类被测试.
在过去的几天里,我已经跟踪了堆栈溢出的各种接受的答案.结果是否定的.
我的gradle文件:
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
}
}
apply plugin: 'com.android.application'
apply plugin: 'jacoco'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "test.gradle.com.myapplicationtestgradle"
minSdkVersion 21
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(
'proguard-android.txt'), 'proguard-rules.pro'
}
debug {
testCoverageEnabled true
}
}
jacoco {
version "0.7.1.201405082137"
}
packagingOptions {
exclude 'LICENSE.txt'
}
}
jacoco {
toolVersion "0.7.1.201405082137"
} …Run Code Online (Sandbox Code Playgroud) 我在我的pom.xml文件中配置了Maven JaCoCo插件,如下所示:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jacoco.version>0.5.9.201207300726</jacoco.version>
</properties>
<profiles>
<profile>
<id>jacoco4</id>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration
<destfile>${project.build.directory}/target/jacoco.exec</destfile>
<datafile>${project.build.directory}/target/jacoco.exec</datafile>
<output>file</output>
<append>true</append>
</configuration>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)
我正在使用Windows 7和apache-maven-3.0.4插件.当我mvn -P jacoco4 install从cygwin终端或命令提示终端输入时,Maven下载并运行JaCoCo插件,但是该jacoco.exec文件似乎没有被创建.以下是错误消息:
[ERROR] Unable to read execution data file C:\Users\brownru\workspace64new\vps9\vps-fileserver\target\jacoco.exec: C:\Users\brownru\workspace64new\vps9\vps-fileserver\target\jacoco.exec (The system cannot find the file specified)
java.io.FileNotFoundException: C:\Users\brownru\workspace64new\vps9\vps-fileserver\target\jacoco.exec (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置jacoco我的项目的代码覆盖率
我的项目基于 Java 1.8
以下是我的项目中的内容 pom.xml
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.5.10.201208310627</version>
<configuration>
<output>file</output>
<append>true</append>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
然后我跑 mvn test,看到以下内容
$ mvn test
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building pennyapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- jacoco-maven-plugin:0.5.10.201208310627:prepare-agent (jacoco-initialize) @ pennyapp ---
[INFO] argLine set to -javaagent:/Users/harit/.m2/repository/org/jacoco/org.jacoco.agent/0.5.10.201208310627/org.jacoco.agent-0.5.10.201208310627-runtime.jar=destfile=/Users/harit/code/idea/pennyapp/target/jacoco.exec,append=true,output=file
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ pennyapp ---
[WARNING] Using platform encoding (UTF-8 actually) to …Run Code Online (Sandbox Code Playgroud) 我一直在尝试在 Android kotlin 项目中实现 Jacoco 来实现代码覆盖率。我使用默认的 android studio 覆盖工具,但它不可靠。所以我尝试实现 Jacoco,但即使测试成功通过,我的代码覆盖率也为 0%。
0% 覆盖率 -
试运行成功——
这是 gradle 脚本 -
plugins {
id 'com.android.library'
id 'kotlin-android'
id 'jacoco'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}
buildTypes {
debug {
debuggable true
minifyEnabled false
testCoverageEnabled true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = …Run Code Online (Sandbox Code Playgroud) jacoco ×10
java ×4
android ×3
maven ×3
gradle ×2
javascript ×1
kotlin ×1
maven-plugin ×1
selenium ×1
xml ×1