问题标签 [cppunit]

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 投票
5 回答
22025 浏览

c++ - 如何测量 CppUnit 测试覆盖率(在 win32 和 Unix 上)?

我有一个非常大的代码库,其中包含大量的单元测试(使用 CppUnit)。我需要计算出这些测试执行了多少代码,并且(理想情况下)生成某种报告,告诉我基于每个库或每个文件,执行了多少代码。

这是踢球者:这必须完全无人看管地运行(最终在持续集成构建中),并且必须是跨平台的(嗯,至少是 WIN32 和 *nix)。

任何人都可以建议一个工具或一组工具来帮助我做到这一点吗?我不能改变 CppUnit(我也不想 - 它踢屁股),但否则我很想听听你可能有的任何建议。

干杯,

0 投票
5 回答
2450 浏览

unit-testing - 使用 CPPUnit 从异常中恢复

我一直在使用 CPPUnit 作为单元测试框架,现在正尝试在自动化构建和打包系统中使用它。然而,一个阻碍我的问题是,如果在单元测试运行期间发生崩溃,例如空指针取消引用,它会停止其余的自动化。

CPPUnit 有没有办法从异常中恢复,记录测试失败,然后优雅地存在而不是终止单元测试过程?即使是针对空指针取消引用的特定方法也会很有用,因为它构成了我遇到的大约 90% 的问题。

为了特定于技术,我在 Windows 系统上使用 makefile。

0 投票
10 回答
310488 浏览

c++ - C++单元测试框架比较

我知道已经有一些关于 C++ 单元测试框架建议的问题,但所有答案都没有帮助,因为他们只是推荐了其中一个框架,但没有提供任何关于(功能)比较的信息。

我认为最有趣的框架是 CppUnit、Boost 和新的 Google 测试框架。有人做过比较吗?

0 投票
7 回答
7049 浏览

c++ - 使用 CppUnit 参数化测试

我的组织正在使用 CppUnit,我正在尝试使用不同的参数运行相同的测试。在测试中运行循环不是一个好的选择,因为任何失败都会中止测试。我看过,TestDecoratorTestCaller似乎都不太合适。代码示例会很有帮助。

0 投票
3 回答
1386 浏览

unit-testing - Visual C++ TDD 设置

我以前没有使用过 Visual Studio。我在业余时间开始了一个个人项目,我想使用测试驱动开发,因为它在我的 Java 开发中对我来说是一个巨大的好处。我很久以前就开始了这个项目,我使用了 CppUnit。我知道可能还有其他更好的框架,但这是已经存在的。

我的 Visual Stuido 2005 解决方案中有 2 个项目。当单元测试位于应用程序代码旁边时,它工作得很好。随着项目规模的扩大,这变得非常麻烦和不雅。我在我的解决方案下创建了一个新项目来容纳单元测试(所以它现在有 3 个项目)。一切都很顺利,直到我尝试构建解决方案。一切都已编译,但单元测试项目无法链接。对于我的测试调用的每个函数,输出为我提供了 51 个“未解决的外部符号”错误 (LNK2019)。

据我推断,问题在于 Visual Studio 创建的目录结构。每个项目都有自己的目录,然后在其下方是创建的目标文件和可执行文件。我认为问题在于,虽然头文件正确包含在每个单元测试中,但链接器无法找到 cpp 文件,因为它们位于不同的目录中。当它找不到被调用函数的实现时,它给了我 2019 错误。

我对问题的评估是否正确?我该如何解决?我是否需要完全重新组织我的项目或者是链接器的简单配置?

谢谢

0 投票
7 回答
18519 浏览

c++ - 单元测试析构函数?

有什么好的方法来单元测试析构函数吗?就像说我有一个像这样(人为)的例子:

有什么好的方法可以对此进行单元测试,以确保 x 被删除,而不会用#ifdef TESTs 弄乱我的 hpp 文件或破坏封装?我看到的主要问题是很难判断 x 是否真的被删除了,特别是因为在调用析构函数时对象超出了范围。

0 投票
1 回答
2145 浏览

linker - cppunit 链接错误

再次编译我的测试套件时,我收到以下链接错误:

我不明白这个问题,因为提供的示例链接很好。

我正在使用宏来注册我的测试:

我的测试类派生自 CPPUNIT_NS::TestFixture

这是“主要”代码:

0 投票
1 回答
765 浏览

c++ - 等效于 boost::test 的 CppUnit 保护器?

我已经将CppUnitboost::test用于 C++ 单元测试。通常我更喜欢boost::test,主要是因为自动测试宏最大限度地减少了设置测试的工作量。但是我真的很怀念一件事CppUnit:注册自己的“保护器”的能力,其实例会自动包装所有运行测试。(从技术上讲,您安装了一个测试“侦听器”,它可以将每个测试包装在一个保护器范围内)。

在过去,我发现这些对于监控单元测试的意外副作用非常宝贵(例如,检查代码没有更改浮点单元状态标志)。boost::test 我在文档中看不到任何等效项,尽管BOOST_FIXTURE_TEST_CASE可能最接近。

关于如何最好地实现与 CppUnit 的保护器相同的事情的任何建议boost::test

(我还没有真正研究过boost::test' 的实现,但如果它像CppUnit它必须使用非常像保护器本身的东西)。

0 投票
2 回答
1677 浏览

c++ - 用于单元测试的“Echo”设备

我目前正在为测试硬件通信端口的程序编写一些 CPPunit 测试(是的,我正在为测试应用程序编写单元测试;-))。我正在测试的一个类基本上是设备文件描述符的包装器;我对文件描述符进行调用 read()Linux 上是否有设备文件/驱动程序,如果您访问它,当您从中读取时,您会读回您写的内容(如 FIFO 队列设备)? 如果我有这个设备文件,那么在我的包装器中替换实际的设备文件会非常简单,并且可以很容易地模拟现实世界硬件上可能发生的“环回”场景。write()write()read()


本质上,我正在寻找的是一种假设的"/dev/echo"设备。

例如:设备的行为如下:

0 投票
2 回答
2878 浏览

c++ - 计算机单元;试图编译类来测试

我对 C++ 和 Cppunit 都很陌生。我正在尝试编译一个小 cppunit 测试。但是,我没有成功。

这是源代码。我在这里想念什么?

----- Coordinate.h ------------------------------------------ ----------------------

----- Coordinate.cpp ------------------------------------------ ----------------------

----- CoordinateTest.h ------------------------------ ----------------------

----- CoordinateTest.cpp ------------------------------ ----------------------

----- ftest.cpp ------------------------------------------ ----------------------