我为我的android项目编写了本地和集成测试案例。使用静态编程语言
(1.4.21)Robolectric
(4.5.1),声纳
(2.7.1),Jacoco
(maven插件0.8.2)
问题是Sonar
和Jacoco
没有考虑androidTest
(集成测试用例)在Kotlin
中编写的代码覆盖率,但是Sonar显示了其他测试用例的正确覆盖率,如-
java单元测试用例-
koltin单元测试用例-
java集成测试用例-
Kotlin集成测试案例-
虽然我已经检查了声纳的路径,而且都是正确的。
properties['sonar.java.binaries'] = files("${buildDir}/intermediates/javac/universalDebug/classes")
properties["sonar.java.binaries"] += files("${buildDir}/tmp/kotlin-classes/universalDebug/")
properties['sonar.java.test.binaries'] = files("${buildDir}/intermediates/javac/universalDebugAndroidTest/classes")
properties['sonar.java.test.binaries'] += files("${buildDir}/tmp/kotlin-classes/universalDebugAndroidTest/")
我已经看过其他的stackoverflow问题,但没有发现同样的问题。所以,我无法找出为什么sonar没有覆盖我用Kotlin编写的集成测试用例的问题。
提前谢谢
更新
在adroidTest文件夹中
MyApplicationTest> src> com > pkgA
> pkgB
它正在考虑pkgA中存在的测试文件,而不是其他文件。我最近创建了这个pkgB这可能是什么原因?我是否更新了某个路径?
您可能需要执行以下操作
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
}
请注意,Java 11存在一些可能会导致测试失败的问题,因此您可能还希望排除jdk。内部
如下
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
excludes = ['jdk.internal.*']
}
或者是一个有点冗长的选项,但可以:
subprojects {
pluginManager.withPlugin("com.android.library"){
android.testOptions.unitTests.all {
jacoco {
includeNoLocationClasses = true
excludes = ['jdk.internal.*']
}
}
}
pluginManager.withPlugin("com.android.application"){
android.testOptions.unitTests.all {
jacoco {
includeNoLocationClasses = true
excludes = ['jdk.internal.*']
}
}
}
apply plugin: 'jacoco'
}
如果可能的话,我建议你也升级你的jacoco和sonar插件版本
我正在运行我的selenium项目模块,它不是主项目的一部分,我用Jacoco maven插件和surefire插件运行selenium测试,Jacoco只给出了selenium项目的代码覆盖(exec文件),而不是整个项目...我需要如何配置我的Jacoco和Surefire以获得外部/整个项目覆盖??
假设在下面的Maven项目结构中有和。 在IntelliJ IDEA中,有一个名为包和类的选项,可以将用于缩小代码覆盖率范围的数据包含在覆盖率中。 我想知道,例如,如果我想查看的覆盖率,我应该向本节添加哪些包?我认为,当我编写这个单元测试仅用于测试时,可以只将或其包添加到要包括在覆盖率数据部分的包和类中。那是真的吗?或者什么是正确的方法?
使用jacoco代理并获取测试覆盖率报告有大量答案。大多数答案都是一半,我有点困惑。 以下是我想做的:1。我的Java应用程序正在某个远程服务器上运行。说IP-192.168.17.7 我使用以下命令运行测试:mvn-Denv=stage-Dmaven。测验失败ignore=true-DsuiteFile=src/test/java/Smoke。xml测试 现在我如何通过使用Jacoco代理获得J
问题内容: 我的软件包中有一个生成的文件,该文件位于顶部。我正在使用进行包裹测试。这将创建覆盖率配置文件并显示总覆盖率百分比。但是在计算覆盖率时,它还包括生成的文件。有没有一种方法可以在覆盖率计算中忽略生成的文件? 问题答案: 大多数Go工具都在软件包上运行,因为软件包本身形成了一个整体上可能有用的 单元 。从软件包中排除文件很容易“破坏”软件包:被排除的文件可能包含(关键的)软件包初始化代码,甚
这与预期的一样工作,并且能够列出集成测试的覆盖率。 我们有一个SonarQube服务器运行在版本上,有人知道当使用代理时,该版本的SonarQube是否能够显示集成测试覆盖率吗?
问题内容: 我试图用来衡量我正在构建的服务的测试覆盖率。这是一个REST API,我通过旋转,测试HTTP请求和查看HTTP响应来对其进行测试。这些测试不是服务包的一部分,并且返回0%的测试覆盖率。有没有办法获得实际的测试覆盖率?我希望在给定的端点上进行最理想的方案测试,至少可以覆盖特定端点处理程序的代码的30-50%,并且可以通过添加更多针对常见错误的测试来进一步改善此情况。 问题答案: 有人向