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:
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。
答案 0 :(得分:0)
首先,我不确定Visual Studio 2015(C ++)是否支持&#34; .exe&#34;单元测试的类型项目。但是你正在使用&#34; .obj&#34;直接来自您的项目。你需要放置&#34; .pdb&#34;文件在同一文件夹中。
我创建了一个静态库项目并添加了单元测试。我的环境也有同样的问题。