c++ - 代码覆盖错误(未检测二进制文件)

标签 c++ visual-studio visual-studio-2015

问题:

微软 Visual Studio 企业版 2015

版本 14.0.25431.01 更新 3

我正在尝试使用代码覆盖功能,但它返回了这个错误:

Empty results generated: No binaries were instrumented. Make sure the tests ran, required binaries were loaded, had matching symbol files, and were not excluded through custom settings. For more information see http://go.microsoft.com/fwlink/?LinkID=253731

我的 .coverage 文件充满了废话,以“PCHÿ”开头。我认为我的问题看起来与此类似:Issue with Code Coverage in VS 2012 ,但删除 .suo 文件并在管理员中运行 Visual Studio 并没有解决任何问题。

如何复制:

1) 创建新的空项目“MyProject”

2) 添加新文件“Calculator.hpp”

#pragma once

class Calculator
{
public:
    int add(int a, int b);
    int sub(int a, int b);
};

3) 添加新文件“Calculator.cpp”

#include "Calculator.hpp"

int Calculator::add(int a, int b)
{
    return a + b;
}

int Calculator::sub(int a, int b)
{
    return a - b;
}

4) 添加新文件main.cpp

#include "Calculator.hpp"
#include <iostream>

using std::cout;

int main()
{
    Calculator calc;
    std::cout << calc.add(5, 11) << std::endl;
    std::cout << calc.add(11, 1) << std::endl;

    return 1;
}

5) 构建解决方案。 (0 个错误)

6) 将新的测试项目添加到解决方案中,如下所述:https://msdn.microsoft.com/en-us/library/hh419385.aspx#objectRef :

  1. 将新的 native 单元测试项目添加到解决方案“CalculatorUnitTest”
  2. 将“main.obj”和“Calculator.obj”添加到“CalculatorUnitTest”的链接器/输入/附加依赖项
  3. 将 obj 文件的路径添加到“CalculatorUnitTest”的链接器/常规/附加库目录。 (在我的例子中:D:\JF\Programming\Tests\MyProject\MyProject\Debug)
  4. 将“MyProject”的头目录添加到 VC++ Directories/Include Directories。 (在我的例子中:D:\JF\Programming\Tests\MyProject\MyProject)。

7) 将“unittest1.cpp”中的代码替换为:

#include "stdafx.h"
#include "CppUnitTest.h"
#include <Calculator.hpp>

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace CalculatorUnitTest
{       
    TEST_CLASS(UnitTest1)
    {
    public:

        TEST_METHOD(TestMethod1)
        {
            Calculator calc;
            Assert::AreEqual(5, calc.add(2, 3));
        }

    };
}

8) 构建解决方案(0 个错误,TestMethod1 出现在测试资源管理器中)

9)右击TestMethod1,“Run Selected Tests”(测试成功通过)

10) 右键单击​​ TestMethod1,“Analyze Code Coverage for Selected Tests”(代码覆盖失败)。

在 D:\JF\Programming\Tests\MyProject\Debug 中,我有我的 MyProject.exe 和 MyProject.pdb 以及 CalculatorUnitTest.dll。

最佳答案

首先,我不确定 Visual Studio 2015 (C++) 是否支持“.exe”类型的单元测试项目。但是您直接从项目中使用“.obj”。您需要将“.pdb”文件放在同一文件夹中。

我创建了一个静态库项目并添加了单元测试。我的环境也有同样的问题。

关于c++ - 代码覆盖错误(未检测二进制文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40600854/

相关文章:

c# - Lambda 在 Roslyn 中被视为封闭代表

Visual Studio 2015 中的 Nuget 忽略 allowedVersions?

c++ - 没有类型的声明

c++ - 使用棋盘标定的相机标定

c++ - (不)在其他像素下方绘制像素的有效方法?

C++:空数组的第一个索引不会用 .resize() 填充其给定字符,但后面的每个其他字符都会

c++ - 函数对象的正确参数类型是什么?

.net - 调试VS 2005提示 "Operation not supported"

visual-studio - Windows 7下调试需要管理员权限的程序

debugging - 调试 ASP.NET Core 时看不到值