问题标签 [microsoft-cpp-unit-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
562 浏览

nuget - #include "gmock\gmock.h" 给出编译时错误

我试图在我的 cpp 单元测试用例中模拟第 3 方 API 调用。为此,我在 VS2013 中使用 Nuget 包管理器在我的项目中安装了 gmock 1.7.0。它在我的测试项目中添加了 gmock-all.cc 和 gtest-all.cc。一旦我遵守它就可以了。一旦我在我的 cppunit 测试用例中添加 #include "gmock\gmock.h" ,它就会给我以下错误 -

2>c:\tfs2013\main\source\packages\gmock.1.7.0\lib\native\include\gtest\internal\gtest-internal.h(893):错误 C2065:'lhs':未声明的标识符 2>c :\tfs2013\main\source\packages\gmock.1.7.0\lib\native\include\gtest\internal\gtest-internal.h(893): 错误 C2988: 无法识别的模板声明/定义 2>c:\tfs2013\ main\source\packages\gmock.1.7.0\lib\native\include\gtest\internal\gtest-internal.h(893):错误 C2059:语法错误:'const' 2>c:\tfs2013\main\source \packages\gmock.1.7.0\lib\native\include\gtest\internal\gtest-internal.h(901):错误 C2143:语法错误:缺少 ';' 在'{' 2>c:\tfs2013\main\source\packages\gmock.1.7.0\lib\native\include\gtest\internal\gtest-internal.h(901) 之前:错误 C2447:'{':缺少函数头(旧式正式列表?) 2>c: \tfs2013\main\source\packages\gmock.1.7.0\lib\native\include\gtest\internal\gtest-internal.h(935):错误 C2365:'testing::internal::CopyArray':重新定义;以前的定义是 'function' 2>c:\tfs2013\main\source\packages\gmock.1.7.0\lib\native\include\gtest\internal\gtest-internal.h(935): error C2998: 'int testing ::internal::CopyArray' : 不能是模板定义

你能帮我摆脱这个吗?

0 投票
1 回答
1363 浏览

visual-studio - 使用 Visual Studio CppUnitTestFramework 打印消息以调试输出的方式

有没有办法在 Visual Studio 中使用 CppUnitTestFramework 将消息打印到输出窗口。
在 MFC 的调试器输出窗口中有TRACE()显示程序消息的功能。
我想知道 CppUnitTestFramework 是否存在这种功能。

0 投票
1 回答
790 浏览

c++ - Visual Studio 2015 未发现单元测试:C++

我正在开发一个 C++ 项目,并开发了一些测试用例。我能够执行测试用例,直到突然所有测试用例从测试资源管理器中消失。我的意思是说即使测试项目编译正确,测试资源管理器中也不会显示测试方法。

我按照这里给出的步骤没有成功。

这些是我做过的事情:

  • 我删除了%temp%文件夹的内容。
  • 我将默认的处理器架构更改为X64. ( Test>Test Settings>Default Processor Architecture>X64)
  • RestartedVS2015。
  • Restarted系统。
  • 我尝试运行devenv /safemode(在命令提示符下),没有运气。
  • 我尝试运行devenv /ResetSettings(在命令提示符下),没有运气。

笔记:

  • 我的解决方案中只有 1 个测试项目,现在它只包含一些测试。
  • 我的项目文件位于网络驱动器上,因为我不允许存储在本地。
  • 我无法禁用防病毒软件或防火墙,并且我的系统没有管理员权限。
0 投票
1 回答
1781 浏览

c++ - 如何使用 Visual Studio CppUnitTestFramework 初始化测试变量

我正在编写一个机器人控制器类Controller,其中我为 4 个可控电机中的每一个使用一个 struct Axis

对于每个测试,我想重置所有内容,因此我在类中创建了一个指针,在每个测试方法之前将其更改为新的 Controller。初始化在 TEST_METHOD_INITIALIZE 中工作正常,但是一旦调用任何 TEST_METHOD,程序似乎会重置轴指针。

谢谢你的帮助!

编辑:经过进一步分析,我得出的理论是,初始化的 Axis 对象 Axis init_mx 在方法完成后被删除。

Edit2:我认为这是一个稍微复杂一点的问题:C++ 中指向局部变量的指针 不过,我没有找到一种方法来为每个方法重置 Axis 变量,而无需实际重置其中的每个变量。

在此处输入图像描述

在此处输入图像描述 Controller.h(摘录):

Controller.cpp(摘录)

0 投票
1 回答
3442 浏览

c++ - 如何正确调用 Assert::ExpectException?

我正在使用 Microsoft 的 CppUnitTestFramework 编写一些单元测试。

我想测试一下,我调用的方法是否引发了正确的异常。我的代码是:

在下面的链接中,我写了类似于上一个答案的调用:

C++/CX 中的函数指针

编译时,我得到C2064错误:术语不计算为采用 0 个参数的函数

为什么这不起作用?

0 投票
1 回答
163 浏览

c++ - 如何使用 Visual Studio CppUnitTestFramework 访问我的代码

我希望对我的代码进行单元测试。这是我所拥有的任务中的专有步骤,我已经编写了代码。

我正在使用 VS Community 2017 v.15.9.7。我已按照本网站的说明逐行详细说明: https ://blogs.msdn.microsoft.com/vcblog/2017/04/19/cpp-testing-in-visual-studio/#Setup

但毕竟包含我得到两个错误:

1) 错误 LNK1120 1 未解决的外部 UnitTest1 \source\repos\Primes\Debug\UnitTest1.dll 1

2) 函数“public: void __thiscall UnitTest1::TestClass::IsOdd(void)”中引用的错误 LNK2019 未解析外部符号“public: bool __thiscall SearchPrimes::IsPrime(int)” (?IsPrime@SearchPrimes@@QAE_NH@Z) (?IsOdd@TestClass@UnitTest1@@QAEXXZ) UnitTest1 C:\Users\Velzevoul\source\repos\Primes\UnitTest1\unittest1.obj

我尝试过移动文件,但我认为随意移动它们弊大于利。我读到了将“stdafx.h”包含到我的“源”中,但这使事情变得更糟,因为越来越多的错误不断出现。

以下是我编写的代码的头文件:

这是test.cpp

为了解决外部依赖关系,我必须做什么?文章说,一旦我按照步骤操作,我就可以开始了。正如文章所暗示的,该测试在一个单独的项目中。如果您认为问题可能与我的 main() 函数有关,请告诉我包含它。我现在不知道,因为它很长。

我提前感谢您的时间!

0 投票
1 回答
226 浏览

tfs - 从 TFS Build 执行第一次测试后 vstest.console.exe 卡住

我在 TFS 上设置了我的项目的构建定义。我打算添加任务以运行 C++ 单元测试并在每次构建后运行它们。

我尝试并添加了任务。当测试在 TFSBuild 上运行时,第一个测试因未处理的 c++ 异常而崩溃,并且没有移至下一个测试。它自己挂在那里。

所以我尝试使用命令行(cmd)手动运行测试。我运行了 vstest.console.exe 命令并执行了所有测试,当从 Build Agent 上的 cmd 运行时它们运行良好。我还尝试在 Visual Studio 上运行它们,它们在 Build Agent 上运行良好。

我不确定 TFS 出了什么问题。

0 投票
1 回答
2634 浏览

c++ - 如何将 Google Mock 与 CppUnitTestFramework 一起使用

TL;DR: 您可以使用 GMock 将模拟功能添加到您的 Microsoft 本机 C++ 单元测试。有关详细信息,请参阅下面的答案


我想开始在我现有的一组原生单元测试中添加模拟。测试是使用 Microsoft 的CppUnitTestFramework框架编写的,该框架不支持模拟。我真的不想为了添加一些模拟而将整个测试套件转换为另一个框架。

Google 的GMock框架似乎提供了我需要的一切,并且文档表明它可以与gtest. 因此,使用来自像这样的博客文章的建议,我创建了几个单元测试。

结果不太令人满意。预期确实有效(第一种方法通过),但如果任何预期失败,则整个运行将中止,测试输出中仅显示以下无用消息:

Visual Studio 测试资源管理器窗口也没有指出问题所在。它只是表明一个测试成功而另一个没有运行:

测试资源管理器屏幕截图

所以我从这个集成中寻找的是:

  1. GMock 测试失败不会中止整个运行。
  2. 未达到 GMock 预期的测试显示为失败。
  3. 所有 GMock 消息都应显示在测试输出中。
0 投票
2 回答
151 浏览

c++ - 使用 Visual Studio Native cpp Unite 测试包含文件 I/O 的问题单元测试函数

我有这段代码可以计算文本文件中存在的短语的实例数量。当我从 main() 函数调用它时,它按预期工作。

当我尝试为它编写单元测试时,它在打开文件时失败,返回-1(参见下面的代码)。

这是我的 countInstances 函数的代码:

我的单元测试看起来像:

对于 CountInstance 测试,我收到以下消息:

消息:断言失败。预期:<3> 实际:<-1>

关于我的问题来自哪里以及如何解决它的任何想法?谢谢。

0 投票
1 回答
94 浏览

c++ - 使用 CppUnitTestFramework 继承

我想创建全局类,因为我想在我的测试中进行相同的初始化。我试过这样,我重复了诸如模糊访问之类的错误。有人有想法吗?

#include <CppUnitTest.h>

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

我的错误: