问题:
微软 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 :
- 将新的 native 单元测试项目添加到解决方案“CalculatorUnitTest”
- 将“main.obj”和“Calculator.obj”添加到“CalculatorUnitTest”的链接器/输入/附加依赖项
- 将 obj 文件的路径添加到“CalculatorUnitTest”的链接器/常规/附加库目录。 (在我的例子中:D:\JF\Programming\Tests\MyProject\MyProject\Debug)
- 将“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/