标签: code-coverage

如何在 Python 中获得 100% 的代码覆盖率?

学习.py

def multiply(a, b):
    return a * b

def addition(a, b):
    return a + b
Run Code Online (Sandbox Code Playgroud)

test_learning.py

import unittest

from learning import *

class Test(unittest.TestCase):
    def test_multiply(self):
        self.assertEqual( multiply(3,4), 12)

    def test_addition(self):
        self.assertEqual( addition(5,10), 15)       

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

50% 的代码覆盖率

虽然两种方法都经过测试,但是代码覆盖率都是50%

C:\>coverage run learning.py test_learning.py

C:\>coverage report

Name       Stmts   Miss  Cover
------------------------------
learning       4      2    50%
Run Code Online (Sandbox Code Playgroud)

python tdd code-coverage coverage.py python-coverage

2
推荐指数
1
解决办法
1566
查看次数

一起使用 django-nose 和 unittest-xml-reporting - 单元测试

我们有一个 django 项目,它使用unittest-xml-reporting为竹子提供有关测试结果的 xml 文件。我们想集成django-nose来测试代码覆盖率。但是由于 django 测试需要一个TEST_RUNNER类,我不知道如何并行使用这两个功能(实际上不重叠):

用于 unittest-xml-reporting

TEST_RUNNER = 'xmlrunner.extra.djangotestrunner.XMLTestRunner'
Run Code Online (Sandbox Code Playgroud)

对于 django-nose

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
Run Code Online (Sandbox Code Playgroud)

我试图进入代码,但编写某种黑客来将类连接在一起似乎很麻烦。还剩下什么选择?

django junit unit-testing code-coverage django-nose

2
推荐指数
1
解决办法
1092
查看次数

gcovr 排除问题

我在一个非源构建上运行 gcovr (3.3),例如:

gcovr --root=/path/to/source --object-directory=/path/to/build

现在我想从报告中排除两个不同的内容:

1) 任何.cpp名称中包含“Test”的文件

--exclude='.*Test.*' 似乎不起作用

2)目录中的所有源文件(比如/path/to/source/MyModule/

--exclude='/path/to/source/MyModule/.*' 似乎不起作用。

--exclude-directories='/path/to/source/MyModule' 似乎也不起作用。

我的问题

a)什么是--exclude-directories因为看起来你(应该)能够排除一个传递给正确正则表达式的目录--exclude

b) 关于为什么--excludes 不能按预期工作的任何建议?也许这些不是正确的正则表达式类型/风格?

c++ code-coverage gcovr

2
推荐指数
1
解决办法
5371
查看次数

测试 Object.hasOwnProperty

我有一个代码实现,它遍历 anobject的属性。

for (const prop in obj) {
    propsMap[prop] = prop;
}
Run Code Online (Sandbox Code Playgroud)

但正如状态一样,我的 IDE (WebStorm) 建议我添加一个属性检查,obj.hasOwnProperty(prop)以避免迭代不存在的属性:

for (const prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        propsMap[prop] = prop;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是当前的测试总是伴随着obj.hasOwnProperty(prop)存在true,并且覆盖率不是我能得到的最好的,我不知道如果obj实际上没有属性会发生什么prop

javascript code-coverage jasmine

2
推荐指数
1
解决办法
2136
查看次数

如何将现有的伊斯坦布尔 json 文件转换为 html

我想istanbul将从客户端获取的 JSON 格式的覆盖率报告文件转换为 html 格式。目前我正在使用remap-istanbul这个,但实际上那个特定的工具旨在为最初用不同语言(如打字稿)编写的代码重新映射覆​​盖率数据。

所以我想是否有更方便的方法来做同样的事情

javascript code-coverage istanbul remap-istanbul

2
推荐指数
1
解决办法
2686
查看次数

如何使用 Gradle Kotlin DSL 设置 codecov?

我已阅读codecov/example-gradle,但不确定如何将其转换为 Kotlin DSL。

我的.travis.yml

language: java
jdk:
- openjdk11
before_install:
- chmod +x gradlew
- chmod +x gradle/wrapper/gradle-wrapper.jar
script:
- ./gradlew test
- ./gradlew codeCoverageReport
after_success:
- bash <(curl -s https://codecov.io/bash)
Run Code Online (Sandbox Code Playgroud)

我的build.gradle.kts

import org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    kotlin("jvm") version "1.2.71"
    jacoco
    maven
}

repositories {
    mavenCentral()
}

dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter-engine:5.3.1")
}

tasks {
    "test"(Test::class) {
        useJUnitPlatform()
    }

    // Task with name 'codeCoverageReport' not found in root project ''.
    "codeCoverageReport"(JacocoReport::class) {
        executionData(fileTree(project.rootDir.absolutePath).include("**/build/jacoco/*.exec"))

        subprojects.onEach { …
Run Code Online (Sandbox Code Playgroud)

code-coverage gradle kotlin codecov gradle-kotlin-dsl

2
推荐指数
1
解决办法
1421
查看次数

当我使用测试 Go Project 代码的 Java 语言运行测试时,如何获得代码覆盖率报告?

我对 go 中的集成测试有一个非常特殊的要求。在过去的几天里,我阅读了许多博客,但我无法获得此问题的解决方案。如果您在下面做过任何事情,请与我分享。

基础设施详情:

  • 启动并运行 Go 项目
  • 用 JAVA 编写我的自动化框架

我的确切要求是:

  1. 我必须检测 Go 代码并使 Go 代码运行
  2. 执行我的java自动化代码
  3. 停止 Go 代码/从 Go 获取代码覆盖率报告

提前致谢!!

code-coverage go test-coverage

2
推荐指数
1
解决办法
3336
查看次数

Kotlin Jacoco 覆盖未显示 Android 中的静态方法(伴随)

我使用以下教程https://proandroiddev.com/unified-code-coverage-for-android-revisited-44789c9b722f在我的 Android 项目中实现了 Jacoco,以满足 kotlin 类中的测试覆盖率。

由于某些未知原因,它没有报告在 Companion 块下声明的静态方法的覆盖率。

class Meh {
    companion object {
     fun test () {
     // logic to test
     }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我将类转换为实例而不是单例,则我可以完全看到覆盖范围。

有没有人遇到过这个问题?你做了什么?

android unit-testing code-coverage jacoco kotlin

2
推荐指数
1
解决办法
1619
查看次数

是否可以在 Jenkins 仪表板上显示 Jacoco Coverage 报告?

我有 jenkins 文件,它具有 publishHTML 方法来生成带有 jacoco 结果的 .html 文件的报告。是否可以在仪表板上显示该报告,例如“测试趋势结果”?

code-coverage jenkins jacoco jenkins-plugins

2
推荐指数
1
解决办法
3364
查看次数

覆盖 gcc9 和 lcov

最近的操作系统升级使我的覆盖脚本惨遭失败。

lcov 1.13

gcov (GCC) 9.1.1

我的 CMake 中用于生成覆盖率数据的部分:

if ($ENV{COVERAGE})
    message("Setting up for coverage")
    enable_testing()
    include(CodeCoverage)
    setup_target_for_coverage(${PROJECT_NAME}_coverage tests coverage)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  --coverage")
endif ()
Run Code Online (Sandbox Code Playgroud)

lcov我在构建测试后发出的命令: lcov --capture --directory build/ --output-file coverage.info

不幸的是现在失败了:

Capturing coverage data from build/
Found gcov version: 9.1.1
Scanning build/ for .gcda files ...
geninfo: WARNING: no .gcda files found in build/ - skipping!
Finished .info-file creation
Run Code Online (Sandbox Code Playgroud)

错误消息是有道理的,因为没有.gcda文件 - 只有.gcno文件。我不确定它们是否具有相同的目的和/或可以与lcov.

我发出了nm some_binary | grep gcov,有很多符号的形式:

00000000004b3520 d …
Run Code Online (Sandbox Code Playgroud)

c++ code-coverage cmake gcov lcov

2
推荐指数
1
解决办法
1863
查看次数