问题标签 [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 投票
8 回答
3777 浏览

c++ - 使用 CppUnit 进行内存泄漏检测

是否有人知道 CppUnit 的扩展,可用于在逐个测试的基础上做出有关内存泄漏的断言。

即 CPPUNIT_ASSERT_NO_LEAKS()?

本质上,当测试的执行导致内存泄漏时,我希望能够使特定测试失败。

0 投票
1 回答
889 浏览

visual-studio - Visual Studio 找不到 CPPUNIT 调试数据库

我正在使用带有 CPPUNIT 的 Visual Studio 2008。我已经编译了 CPPUNIT 并将 CPPUNIT 路径添加到 Include 和 Library 路径。目前,我可以使用 CPPUNIT 库编译我的程序。

但是,链接器会生成以下警告:

警告 2 警告 LNK4099:在“C:\Program Files\cppunit\cppunit-1.12.1\lib\cppunitd.lib”或“c:\Users\hide1713\Desktop\3d_tank\”中找不到 PDB“vc90.pdb” cpp_pj\bin\vc90.pdb'; 链接对象好像没有调试信息 cppunitd.lib GameUnitTest

有一个 cppunitd_dll.pdb 文件以及 cppunitd.lib。如何告诉链接器在哪里可以找到 CPPUNIT 调试数据库?

谢谢大家。

0 投票
3 回答
3359 浏览

c++ - 使用 CppUnit 链接测试库

我正在使用 CppUnit 设置一堆单元测试,但遇到的问题是没有一个测试正在运行。该项目分为几个小库,我计划以相同的方式划分单元测试类,然后将它们全部链接到一个单独的测试程序中。问题是,然后测试类在他们自己的库中,除非我明确调用它们,否则它们不会链接到主测试程序中,即我必须放入

runner.addTest( TestClass::suite() );

单独为每个测试类,不能使用 TestFactoryRegistry 的 makeTests() 方法来获取测试列表。如果我只是在顶层目录中将它们全部编译在一起,那么 makeTests() 方法可以正常工作,但如果我能提供帮助,我不想将所有测试类放在一个位置。

CppUnit 文档给出了以下小提示

使用 Helper 宏时的链接问题?

当您创建一个项目并编写它的单元测试套件时,通过使用所谓的帮助宏使工作变得更容易:CPPUNIT_TEST_SUITE_NAMED_REGISTRATION、CPPUNIT_REGISTRY_ADD 和 CPPUNIT_REGISTRY_ADD_TO_DEFAULT。问题是,如果您在 TestFixture 类的源代码文件中使用这些宏(例如 MyTest),并且如果您使用这样的一行

);

在 main.cpp 文件中的 main() 函数中,根本不会有测试运行!

原因很简单,如果您的 main.cpp 中没有未定义的符号,则链接阶段(构建过程的步骤之一)不要在最终的可执行文件中插入目标文件(.obj 或 .o 文件)。

这样,包含 AutoRegister 静态变量实例化的目标代码不是最终可执行文件的一部分,并且无法在 main() 函数中将自己插入到运行器中。

您必须在 main.cpp 中创建一个未定义的符号,以便 mytest.o 文件与 main.o 集成到最终的可执行文件中。

米歇尔·诺拉德犯下的诡计

但没有说如何使这项工作,我只是足够密集,无法自己弄清楚或在网上找到一个例子。

现在我可以为每个库单独做一个可执行的测试,最后我可能会这样做,但我想先让它工作,所以我只需要运行一个测试程序来测试整个事情。有关如何使其发挥作用的任何想法/示例?

0 投票
3 回答
14798 浏览

c++ - 如何运行 CPPUnit 单元测试

我使用 CPPUnit 编写了一些 c++ 单元测试。

但我不明白如何运行这些。

有没有像 Nunit-gui 这样的工具?

目前我已经在 DLL 中编写并打包了测试。

当我用谷歌搜索时,我发现了这个http://cppunit.sourceforge.net/doc/lastest/cppunit_cookbook.html

但我无法理解它如何从 DLL 中获取测试。

0 投票
3 回答
4170 浏览

c++ - cppunit 和 xcode 项目的 vtable 问题

我正在尝试构建 zxing iphone 项目并运行用 cppunit-1.12.1 编写的测试套件。我在项目中复制了 cppunit-1.12.1 代码,并将活动 SDK 更改为 10.5,我能够构建 cppunit 和 zxingcore 目标,但是当我尝试构建 zxingcore-tests 目标时,出现以下错误,这似乎与 vtables 有关,并且与库的体系结构类型有关的奇怪警告:

有没有一种很好的格式化方法,基本上是转义格式,而不必在每一行的前面插入一个 >。我使用<pre>了在预览中效果很好的标签,但在最终渲染中却没有——不尊重格式并切断了文本。一旦有人给我建议,我会修改格式。

....many more of these warnings...

现在的错误

0 投票
1 回答
842 浏览

c++ - 重载 operator<< 用于 ostream

我正在使用 CPPUnit 在我的程序中测试一个类。这个类 ( SCriterionVal) 有点独特,因为它具有许多类型的转换运算符(它本质上是一个动态类型值类)。当我编译使用 测试它的测试用例时,我从 CPPUnit 头文件之一中CPPUNIT_ASSERT_EQUAL()得到关于“不明确”的编译错误。operator<<似乎它正在assertion_traits用我的类型实例化结构,并且该结构有一个toString()方法可以通过operator<<OStringStream.

我认为这是模棱两可而不是错误,因为 上可用的各种转换SCriterionVal,其中一些已经定义operator<<(例如内置类型)。为了纠正这种情况,我在标头中创建了一个SCriterionVal具有此签名的非成员函数:

我想因为签名应该是完全匹配的,它会解决歧义。没有这样的运气。我在这里做错了什么?我想我可以为我的类型专门化模板assertion_traits,但我希望能够解决更普遍的问题,即提供一种将我的类放入流中的方法,而不仅仅是迎合测试框架。

0 投票
1 回答
1355 浏览

c++ - CppUnit 泄漏

用 valgrind 运行我的回归测试我有这样的报告:

我想这是因为添加到套件的测试在主要结束之前没有被删除。

这是我注册测试的方式:

如何取消注册这些测试?

0 投票
2 回答
2998 浏览

c++ - 如何在 CPPUnit 中关闭单元测试

我(最终)让我的应用程序使用 CPPUnit 进行单元测试,并且我让 CruiseControl.NET 运行测试并显示测试输出。但是,我有几个测试总是失败,所以 CruiseControl 总是将构建标记为失败。有什么办法可以“关闭”或“跳过”或“忽略”这些总是失败的测试?我宁愿不只是在源代码中将它们注释掉,因为它们指出了应用程序中的有效错误,我们目前由于业务原因无法修复,但可能能够在未来的版本中解决。如果可能的话,我希望仍然能够运行测试并查看它们的输出,但只是让 CPPUnit 不将它们视为失败(或者甚至在 CruiseControl 级别忽略它们)。

0 投票
5 回答
5352 浏览

c++ - 如何使用cpp单元

有没有一本好书或在线网站讨论 CppUnit 的使用,适合初学者?

0 投票
8 回答
18831 浏览

c++ - C++ 单元测试库

我遇到过 cppunit,但它看起来并不超级好用(也许我看起来并不难,也许是因为 C++ 不像 Java/C# 那样工作)。是否有广泛使用的简单替代方案?

事实上, cppunitC++ 的标准单元测试框架吗?