标签: test-coverage

使用 CMake 将 *.gcno 和 *.gcda 文件添加到 make clean 规则中

我的项目结构类似:

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 logic.cpp\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 logic.h\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 test\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 CMakeLists.txt\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 logic_test.cpp\n
Run Code Online (Sandbox Code Playgroud)\n\n

主要CMakeLists.txt文件是:

\n\n
cmake_minimum_required (VERSION 2.8)\nproject (Logic)\nset (Logic_SOURCES ${PROJECT_SOURCE_DIR}/src/logic.cpp)\ninclude_directories (${PROJECT_SOURCE_DIR}/src)\nadd_library (logic SHARED ${Logic_SOURCES})\nadd_subdirectory (test)\n
Run Code Online (Sandbox Code Playgroud)\n\n

对于CMakeLists.txt测试来说是:

\n\n
find_package (GTest)\nset (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -march=native -mtune=native -fprofile-arcs -ftest-coverage")\nset (CMAKE_EXE_LINKER_FLAGS "-fprofile-arcs -ftest-coverage")\nset (Test_SOURCES ${Logic_SOURCES} ${PROJECT_SOURCE_DIR}/test/logic_test.cpp)\nadd_executable (logic_test ${Test_SOURCES})\ntarget_link_libraries (${TestName} gtest gtest_main gcov pthread)\n
Run Code Online (Sandbox Code Playgroud)\n\n

为了处理测试覆盖率报告,我已将自定义目标添加到test/CMakeLists.txt

\n\n
set (Coverage_REPORT ${PROJECT_BINARY_DIR}/coverage.info)\nset (Coverage_DIR    ${PROJECT_BINARY_DIR}/coverage)\nadd_custom_command (\n    OUTPUT  ${Coverage_REPORT}\n    COMMAND lcov -q -c -f -b . -d ${PROJECT_BINARY_DIR}/test …
Run Code Online (Sandbox Code Playgroud)

makefile cmake lcov test-coverage

5
推荐指数
1
解决办法
4582
查看次数

使用gcc构建时如何将gcno文件移动到文件夹

我有一个make选项指定为

gcc -fprofile-arcs -ftest-coverage -fPIC -fprofile-dir="./build" test.c -o build/test.out 
Run Code Online (Sandbox Code Playgroud)

使用以上选项,gcda文件将移动到构建目录,但文件不会移动到目录gcno

我们如何将gcno文件移动到build文件夹?

c gcc test-coverage

5
推荐指数
0
解决办法
1870
查看次数

用逻辑或(||)测试if语句的覆盖率-由于Java的短路,JaCoCo要我覆盖的第四个条件是什么?

这可能是一个相当简单的问题,但我很茫然。

我有一个if语句,如下所示:

if(TheEnum.A.equals(myEnum) || TheEnum.B.equals(myEnum))
Run Code Online (Sandbox Code Playgroud)

TheEnum可以ABC,... G(不止4个选项)。

JaCoCo(SONAR)告诉我这里有四个条件。那些是什么?从本质上讲,我不是可以测试的整套设备

if(true || not_evaluated) => true
if(false || true) => true
if(false || false) => false
Run Code Online (Sandbox Code Playgroud)

我敢肯定我不能专门测试 if(true || true)if(true || false),因为短路评估不会那么远...?

如果是这样,JaCoCo / Sonar要我测试的第四个选项是什么?

java short-circuiting jacoco test-coverage sonarqube

5
推荐指数
1
解决办法
1494
查看次数

SWIG 编译的 C++/Python 代码的测试覆盖率

我有一个经典的 SWIG 设置,其中从 Python 调用一堆 C++ 函数。现在,在添加一些测试(在 Python 中)之后,我想获得 C++ 源代码的测试覆盖率。经典的Python方法是

nosetests --with-coverage --cover-package=mypackage
Run Code Online (Sandbox Code Playgroud)

但这仅适用于本机 Python 模块。事实上,这将返回mypackage.pySWIG 生成的文件的覆盖范围。

由于我需要覆盖 C++ 文件(/SWIG 生成的共享库),因此--coverage肯定需要添加编译和链接器标志。但不知道从那里去哪里。

有什么提示吗?

c++ python swig test-coverage

5
推荐指数
1
解决办法
548
查看次数

在 Android Studio 3.0 中运行覆盖率测试失败

我右键单击我的 LoginActivityTest 文件并选择Run LoginActivityTest,它运行并完成了所有测试。

现在我想在覆盖范围内运行它。然后,我右键单击 LoginActivityTest 文件并选择Run LoginActivityTest with Coverage,花了一些时间来构建它,然后输出以下内容:

---- IntelliJ IDEA coverage runner ---- 
sampling ...
include patterns:
com\.example\.ui\.login\..*
exclude patterns:
Process finished with exit code 1
Class not found: "com.example.ui.login.LoginActivityTest"Empty test suite.
Run Code Online (Sandbox Code Playgroud)

有人有同样的问题吗?我错过了什么吗?我怎样才能让它在测试覆盖范围内运行?

android android-testing test-coverage

5
推荐指数
0
解决办法
504
查看次数

Sonar + Jacoco + Junit 5:没有关于每次测试覆盖率的信息

我正在尝试使用 Sonarqube 7 获得每个测试功能的覆盖率。

我正在使用 jacoco-maven-plugin 并且我的测试正在使用 JUnit 5 运行。

我成功地在 Sonarqube 仪表板上获得了全球覆盖,但我想通过能够查看哪些测试覆盖了我的课程的哪些行来更深入。

我在这里尝试了给定的配置但没有成功:我在日志中收到以下消息“没有关于每个测试覆盖率的信息”。我看到这可以通过添加一个 listener 来获得org.sonar.java.jacoco.JUnitListener,但它是一个 JUnit 4 监听器,所以我想它因此不起作用。

我如何才能使每个测试功能的 Coverage 与 JUnit 5 一起使用?

java test-coverage sonarqube jacoco-maven-plugin junit5

5
推荐指数
1
解决办法
2151
查看次数

jest@23.1.0collectCoverageFrom不选取根目录之外的文件

当我运行代码覆盖率时,包含 jest 配置的根目录内的代码工作正常,但对于根目录外的代码测试用例通过,但在覆盖率报告中,它显示根目录外的所有测试文件的百分比为零。

jest.config.js文件位于 explorebook 文件夹内。

目录结构:

|---core
|   |--components
|      |--test
|   |--jest.setup.suites.js
|---explorebook
|    |--components
|    |  |--test
|    |--package.json
|    |--jest.config.js
|    |--jest.setup.suites.js
|---framework    
|     |--commons
|        |--test
|     |--jest.setup.suites.js 
|
Run Code Online (Sandbox Code Playgroud)

笑话配置.js

const TEST_FILES_REGEX = '(/test/.*|(\\.|/)(test|spec))\\.js$';

module.exports = {
    verbose: false,
    roots: [
        '<rootDir>/',
        '<rootDir>/../core/',
        '<rootDir>/../framework/commons/'
    ],
    collectCoverage: true,
    collectCoverageFrom: [
         'components/**/*.js',
         '<rootDir>/../core/components/**/*.js'
         '<rootDir>/../framework/commons/*.js'
    ],
    coverageDirectory: 'reports/coverage',
    coverageReporters: [
        'lcov',
        'text'
    ],
   setupFiles: [ '<rootDir>/jest.setup.suites.js', 
          '<rootDir>/../core/jest.setup.suites.js', 
          '<rootDir>/../framework/jest.setup.suites.js' ],
   setupTestFrameworkScriptFile: path.join(__dirname, 'jest.setup.tests.js'),
   testEnvironment: 'jsdom',
   testRegex: TEST_FILES_REGEX

}; …
Run Code Online (Sandbox Code Playgroud)

test-coverage jestjs babel-jest

5
推荐指数
1
解决办法
3412
查看次数

我可以将 mypy 报告与 pytest 覆盖率报告结合起来吗?

我可以通过mypy生成类型“覆盖”报告

mypy . --html-report mypy-report
Run Code Online (Sandbox Code Playgroud)

以及带有pytest-cov的 pytest 覆盖率报告

pytest --cov=app --cov-report=html
Run Code Online (Sandbox Code Playgroud)

有没有办法将两个报告结合起来?我会对既没有被单元测试也没有被 mypy 覆盖的代码感兴趣。

code-coverage pytest test-coverage mypy

5
推荐指数
1
解决办法
456
查看次数

笑话报道 - /* 伊斯坦布尔忽略下一个 */ - 不起作用

希望在玩笑覆盖范围中忽略这部分代码

/* istanbul ignore next */
async middleware(
    req: Request<ParamsDictionary, any, any, ParsedQs, Record<string, any>>,
    _res: Response<any, Record<string, any>>,
    next: NextFunction
) {
    const { email, password } = req.body
    await validate({ email, password })

    next()
}
Run Code Online (Sandbox Code Playgroud)

我尝试过,/* istanbul ignore next */但似乎不起作用

覆盖结果

javascript istanbul test-coverage jestjs

5
推荐指数
0
解决办法
1745
查看次数

如何使用 vscode 扩展测试生成覆盖率报告

我正在实现 VSCode 扩展。我按照此链接设置了该项目。

它生成一个带有src/test/runTest.ts文件的启动项目:

import * as path from 'path';

import { runTests } from '@vscode/test-electron';

async function main() {
    try {
        // The folder containing the Extension Manifest package.json
        // Passed to `--extensionDevelopmentPath`
        const extensionDevelopmentPath = path.resolve(__dirname, '../../');

        // The path to test runner
        // Passed to --extensionTestsPath
        const extensionTestsPath = path.resolve(__dirname, './suite/index');

        // Download VS Code, unzip it and run the integration test
        await runTests({ extensionDevelopmentPath, extensionTestsPath });
    } catch (err) {
        console.error('Failed to …
Run Code Online (Sandbox Code Playgroud)

testing test-coverage visual-studio-code vscode-extensions

4
推荐指数
1
解决办法
4417
查看次数