`
cutecoot
  • 浏览: 120720 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

统计dll中代码测试覆盖率 (VS+GTEST)

阅读更多
  1. 在VS里,根据VS版本安装支持GTest测试的插件,微软官方在VS2017版插件上进行了支持,但VS2015版的插件依然还是个人维护。
    1. VS2015: Google Test Adapter marketplace下载地址
    2. VS2017: Test Adapter for Google Test marketplace下载地址 (Visual Studio 2017 15.5 now offers Google Test support by default)
  2. 准备好待测试的dll。需要debug版本,包括对应的pdb文件。放在测试架构输出目录中。
  3. 在VS工程目录中,创建后缀为“.runsettings”的配置文件,如下样例:(未添加此文件,可能收集不到第三方dll的信息。<ModulePaths><Include>可特别指明欲收集信息的目标)

    <?xml version="1.0" encoding="utf-8"?>  
    <RunSettings>  
      <!-- Configurations that affect the Test Framework -->  
      <RunConfiguration>  
        <MaxCpuCount>1</MaxCpuCount>  
        <!-- Path relative to solution directory -->  
        <ResultsDirectory>.\TestResults</ResultsDirectory>  
      
        <!-- [x86] | x64    
          - You can also change it from menu Test, Test Settings, Default Processor Architecture -->  
        <TargetPlatform>x64</TargetPlatform>  
      
        <!-- Framework35 | [Framework40] | Framework45 -->  
        <TargetFrameworkVersion>Framework40</TargetFrameworkVersion>  
      
        <!-- Path to Test Adapters -->  
        <TestAdaptersPaths>%SystemDrive%\Temp\foo;%SystemDrive%\Temp\bar</TestAdaptersPaths>  
      </RunConfiguration>  
      
      <!-- Configurations for data collectors -->  
      <DataCollectionRunSettings>  
        <DataCollectors>  
          <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">  
            <Configuration>  
              <CodeCoverage>  
                <ModulePaths>
    
                  <Exclude>  
                    <ModulePath>.*CPPUnitTestFramework.*</ModulePath>  
                  </Exclude>  
                </ModulePaths>  
      
                <!-- We recommend you do not change the following values: -->  
                <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>  
                <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>  
                <CollectFromChildProcesses>True</CollectFromChildProcesses>  
                <CollectAspDotNet>False</CollectAspDotNet>  
      
              </CodeCoverage>  
            </Configuration>  
          </DataCollector>  
        </DataCollectors>  
      </DataCollectionRunSettings>  
      
    </RunSettings>  
     
  4. 打开VS,调出测试资源窗口。测试→ 窗口→测试资源管理器
  5. 编译GTest架构的测试框架,所有的测试会被自动识别并显示在测试资源管理器中(被识别的是编译出的可执行的测试例,比如使用了GTEST_FLAG(filter),筛选出的测试例才会被识别。)
  6. 在测试资源管理器中选择测试例进行覆盖率测试
  7. 统计结果会自动显示在下方代码覆盖率结果窗口,同时结果文件会生成在<ResultsDirectory>

PS: 需要Visual Studio Enterprise版本, Community和Professional版本不支持

分享到:
评论

相关推荐

    vscode+gtest+cmake

    在VSCode中配置gtest,可以通过插件实现一键运行测试,快速定位代码问题。 3. **CMake**:CMake是一个跨平台的构建系统,用于管理项目的构建过程。它可以生成各种平台的构建工具所需的项目文件,如Unix Makefiles或...

    gmoke+gtest

    4. **测试覆盖率**:虽然gtest和gmock本身不直接提供覆盖率报告,但它们可以与其他工具(如gcov和lcov)结合使用,以评估代码的测试覆盖率。 5. **持续集成(CI)**:这种测试框架可以轻松地集成到持续集成系统中,如...

    cmake + gtest 工程示例

    在C++编程中,构建和测试项目是开发过程中的关键环节。`cmake`和`gtest`是两个非常重要的工具,分别用于构建管理和自动化单元测试。`cmake`是一个跨平台的构建系统,它允许开发者编写平台无关的构建脚本,而`gtest`...

    gtest单元测试(unit test)及覆盖率

    `gtest单元测试(unit test)及覆盖率`是一个关于使用Google Test框架进行软件单元测试以及如何计算测试覆盖率的主题。Google Test,通常简称为gtest,是Google开发的一个开源C++测试库,用于编写C++代码的单元测试...

    windows平台下C/C++代码覆盖率检查工具

    在Windows平台上进行C/C++开发时,代码覆盖率检查是一个重要的质量保证步骤,它能帮助开发者了解测试用例对源代码的覆盖程度。代码覆盖率通常包括行覆盖率、分支覆盖率等指标,能够评估测试的有效性,确保代码的健壮...

    C语言 单元测试 gtest教程 ctestcode Unitest

    为了更好地理解gtest的使用,教程中可能包含了一个名为`gtesthelp.png`的图片,它可能展示了如何在代码中声明和运行测试用例的示例。而`ctest1.0.exe`可能是用于执行测试的可执行文件,可能使用了CTest,这是CMake的...

    Android Native C++代码覆盖率统计 Demo(基于NDK 21)

    本Demo主要介绍如何在Android环境中使用NDK 21来实现对C++代码的覆盖率统计。下面我们将深入探讨这个主题。 首先,代码覆盖率是衡量软件测试完整性的一个重要指标,它反映了测试用例执行时覆盖了多少源代码。对于...

    CC++单元测试框架gtest初探.docx

    CC++单元测试框架gtest初探 gtest 是 Google 开源的 C++ 单元测试框架,提供了一个灵活、可靠、可扩展的测试解决方案。本文将介绍 gtest 的基本使用,包括下载、安装、编译、建立第一个测试 Demo 工程,以及编写一...

    autotest-cpp:带有 on-write 自动化测试的 clang + gtest + cmake 示例文件

    最后,我想要一个快速的测试周期,因此创建了一个简单的自动测试脚本,每次我从编辑器编写源文件时都会运行 gtest 单元测试。 此示例项目的所有研究工作都包含在 shell 脚本中。 我试图让它们尽可能简单,以便于...

    GTest使用手册 中文版本 使用VS编译

    GTest 使用手册 中文版本 使用VS编译 本文档是对 Google 开源 C++单元测试框架 GoogleTest(简称 gtest)的使用手册,旨在帮助开发者快速上手使用 gtest 进行单元测试。gtest 是一个功能强大且易用的单元测试框架,...

    gtest单元测试框架源码

    这样可以针对不同的输入数据运行相同的测试逻辑,提高测试覆盖率。 2. 面向对象:`gtest`支持继承自`testing::Test`的类作为测试用例,可以定义通用的初始化和清理方法。 3. 流程控制:`gtest`提供了`SetUp`和`...

    VS 2015 Gtest完整工程

    总之,VS 2015 Gtest完整工程是一个用于教学和实践的资源,它演示了如何在Visual Studio 2015中有效地集成和使用Google Test框架进行C++代码的单元测试。通过深入理解和实践,开发者可以提升代码质量,确保软件的...

    gtest单元测试框架

    `gtest单元测试框架`是基于C++的单元测试库,由Google开发并广泛应用于软件开发中,用于验证代码模块的功能正确性。它提供了一种结构化的、易于使用的接口,允许开发者编写可执行的测试用例,确保代码在修改或添加新...

    Gtest单元测试框架使用初探

    Google的C++ Testing Framework,即Gtest,是一个广泛使用的开源单元测试框架,旨在简化C/C++项目的测试工作。它的设计目标是提供一个易于理解和使用的工具,使得开发人员能够快速地编写出可读性强且功能全面的测试...

    gtest1.5C++单元测试工具

    8. 覆盖率报告:虽然gtest本身并不直接支持代码覆盖率报告,但可以与其他工具(如gcov、lcov)结合,获取测试覆盖的代码比例。 9. 编译和链接:在项目中使用gtest时,需要将gtest库添加到编译和链接步骤中。在gtest...

    GTest测试框架入门教程

    谷歌的GTest测试框架是C++开发者进行单元测试和集成测试的重要工具,它提供了一种结构化、可扩展的方式来验证代码的功能。这篇入门教程将帮助你掌握GTest的基础知识,以便在自己的项目中有效地利用它。 一、GTest...

    gtest1.4.0源代码

    8. **值参数化测试(Value-Parameterized Tests)**:gtest1.4.0引入了值参数化测试的概念,允许在一个测试用例模板中使用不同的输入值进行多次测试,从而减少重复代码。 9. **测试事件监听器(Test Event ...

    gtest 中文文档pdf

    根据提供的文件信息,本文将详细解析与谷歌测试框架(Google Test,简称 gtest)相关的知识点。...通过深入了解其特性并遵循最佳实践,开发者可以在实际项目中充分发挥 gtest 的优势,有效地进行代码测试和维护。

    gtest demo

    我使用的源码是gtest-1.6.0,这下面有一个文件夹fused-src,下面的gtest中包含有gtest.h.gtest_main.cc,gtest-all.cc三个文件,这即是可重用的代码了,你可以把它们加入你的工程,然后写测试代码。之前下了份别人的...

    用 GTest 来测试MFC 程序 TDD开发

    GTest是谷歌发布的一个强大的测试框架,能够帮助开发者编写高质量的C++代码。 首先,要使用GTest测试MFC程序,需要解决的一个关键问题是GTest库与MFC程序运行时库配置的匹配。通常,MFC程序使用MD(多线程DLL)配置...

Global site tag (gtag.js) - Google Analytics