代码覆盖率错误(未检测到二进制文件)

时间:2016-11-15 02:02:01

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

问题:

Microsoft Visual Studio Enterprise 2015

版本14.0.25431.01更新3

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

  

生成空结果:未检测到二进制文件。确保   测试运行,加载了所需的二进制文件,具有匹配的符号文件,   并未通过自定义设置排除。欲获得更多信息   见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. 将新的本机单元测试项目添加到解决方案“CalculatorUnitTest”
  2. 将“main.obj”和“Calculator.obj”添加到“CalculatorUnitTest”的链接器/输入/附加依赖项
  3. 将obj文件的路径添加到“CalculatorUnitTest”的链接器/常规/附加库目录。 (在我的情况下:D:\ JF \ Programming \ Tests \ MyProject \ MyProject \ Debug)
  4. 将“MyProject”的头目录添加到VC ++目录/包含目录。 (在我的例子中:D:\ JF \ Programming \ Tests \ MyProject \ MyProject)。
  5. 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,“运行选定的测试”(测试成功通过)

    10)右键单击TestMethod1,“分析所选测试的代码覆盖率”(代码覆盖率失败)。

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

1 个答案:

答案 0 :(得分:0)

首先,我不确定Visual Studio 2015(C ++)是否支持&#34; .exe&#34;单元测试的类型项目。但是你正在使用&#34; .obj&#34;直接来自您的项目。你需要放置&#34; .pdb&#34;文件在同一文件夹中。

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