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

cppunit - CPPUnit 中的测试用例选择

是否可以像在 NUnit 中一样选择在 CPPUnit 中运行哪些测试用例?可能正在使用一些配置文件?

谢谢,拉克什。

0 投票
3 回答
1378 浏览

c++ - 我在哪里放置单元测试源并公开内部组件?

我正在接管一个通过 ATL 公开组件的项目。

我看到单元测试的两个主要领域需要通过这个设置来覆盖:

  • 测试内部组件(可能会或可能不会通过 COM 公开)
  • 测试外部暴露组件(也称为测试暴露接口)

目前,该项目在解决方案中包含其所有内部组件单元测试。它们由一个预处理器标志启用,该标志编译它并在您运行时执行。

从我一直在做的研究来看,“规范”似乎是将单元测试放在不同的子项目中,并让单元测试的主要解决方案提供挂钩以访问内部组件。使用此设置,单元测试解决方案将设置对正在测试的解决方案的依赖关系。这真的是“规范”吗,还是有很多人将他们的单元测试框架放在正在测试的解决方案中(又名单元测试不是子项目,而是松散的 cpp,#ifdef如果未提供预处理器标志)?

目前使用的单元测试框架似乎是 cppunit,我正在考虑将其切换到 gtest 并尝试将所有内容移到不同的子项目中,但我想确保从长远来看,这些努力是值得的。

我想到的一种方法是__declspec对要测试的类进行测试,并且仅在指定预处理器定义时才公开它们。然后,单独的单元测试子项目将使该预处理器能够告诉主要解决方案公开内部。我只是不确定这是否是最好的路线。

所以我的问题是:

  1. 是否将单元测试放在单独的(子)项目中并从将要测试的源中公开组件(通过钩子,公开类定义等)?
  2. 从 COM DLL 公开内部组件的最佳方式是什么?
  3. __declspec允许测试内部组件的预处理器标志会是一个坏主意吗?有没有其他人在他们的单元测试中做到这一点,在正常操作期间被测试的项目通常不会暴露?

感谢您的评论!

0 投票
2 回答
4458 浏览

c++ - CppUnit 和 Visual Studio 2010 入门

我一直在寻找答案,直到我变得眼花缭乱和困惑。

我有一个装有 Visual Studios 2010 的 Windows XP 环境。我已从 Sourceforge 下载并解压缩 CppUnit 1.12.1 到 C:\CppUnit。我知道我必须使用 Visual Studio 打开 src/CppUnitLibraries.dsw 并批量构建它打开的所有项目以使用库填充 lib 目录。这本质上是 CppUnit“安装”过程的范围。

但是,当我尝试打开 CppUnitLibraries.dsw 时,Visual Studio 说该项目必须转换为当前的 Visual C++ 项目格式。如果我单击“是”(转换并打开项目),它会说无法加载项目文件并询问我是否要从解决方案中删除可卸载的项目,我说“不”,因为我确定这不是我想要发生的。它为 CppUnitLibraries.dsw 解决方案中的许多项目执行此操作,我假设这是不需要的行为。

我的一些搜索结果表明我应该打开 src\msvc6\testrunner\MsDevCallerListCtrl.cpp,找到显示...的行

#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids"

...并用 10.0 替换 7.0。但这无济于事。

难道我做错了什么?我必须做什么才能开始使用 CppUnit?(如果这是一个非常愚蠢的问题,我很抱歉。我很困惑,很沮丧,很困惑。)

0 投票
1 回答
415 浏览

cppunit - 是否有一个 cppunit 等效于测试用例的 nunit 的 Category 属性?

对于测试用例,我想要一个与 nUnit 的 Category 属性等效的函数。

我继承了大量的 C++ 测试用例,其中一些是单元测试,一些是运行时间较长的集成测试,我需要设置我的持续集成构建过程来忽略集成测试用例。

我宁愿简单地标记所有集成测试用例并指示 cppunit 在 CI 构建期间排除它们。

我是否忽略了 cppunit 的一个功能,还是有其他方法可以实现这一目标?

0 投票
1 回答
2002 浏览

c++ - CppUnit,很简单的测试代码崩溃了,为什么?

我正在学习 CppUnit,我的代码在调用 TestRunner::run() 时被转储。这是下面代码中的第 34 行。我看不出有什么不对。它与 CppUnit 食谱中的示例代码几乎相同。

输出:

堆栈跟踪:

编译行: g++ -g -o -Wall test_runner test_runner.cpp -lcppunit
编译成功,没有任何警告。
如果我打开“-Wall”,它会给出错误:

0 投票
3 回答
30482 浏览

c++ - GoogleTest vs CppUnit:事实

在为未来几年设置 C++ 单元测试框架的过程中,我们将GoogleTestCppUnit列入了候选名单。我对这两者都有一些经验,我最喜欢的是 GoogleTest。无论如何,为了说服我的老板,我需要一些事实,所以我在 Internet 上进行了一些阅读,包括手册、wiki 页面和一些资源。我提出了一份 GoogleTest 优势列表和一个 CppUnit 优势(图形测试运行器)。在这里,它们按感知有用性排序:

  • INSTANTIATE_TEST_CASE_P 使用您想要的任何参数集实例化测试用例,包括笛卡尔积
  • FRIEND_TEST 用于测试私有类成员(适用于所有遗留代码)
  • 将断言变成断点
  • 非致命断言
  • “开箱即用” googlemock 集成
  • 自动测试检测,无需枚举
  • 可以禁用和启用测试
  • 可以使用名称模式选择要运行的测试
  • 值/类型参数化测试
  • 用户定义的谓词断言
  • 死亡测试
  • 更丰富的断言集
  • 类型断言
  • 断言子程序
  • 可以使用 << 将额外的调试信息添加到断言中
  • RecordProperty 将属性的最后一个值发送到 XML 输出
  • SCOPED_TRACE 有助于理解来自子例程或循环内部的断言失败的上下文。
  • xUnit XML 输出,可以由 Jenkins 立即显示,而无需在两者之间进行 XSLT 转换
  • 支持自定义类型打印机
  • 测试指示所消耗的时间(我怀疑这也可以使用 CppUnit,但我还没有弄清楚)
  • 测试事件监听 API(用户自定义插件)
  • 测试改组
  • 没有例外和 RTTI

我是否正确假设 CppUnit 不支持以上所有内容?我缺少的 CppUnit 中 是否有一个有用的 GoogleTest 功能不可用?

最后但并非最不重要的一点是:GoogleTest 是否缺少任何不错的 CppUnit 功能?

谢谢!

0 投票
2 回答
1305 浏览

.net - 如何为 Visual C++ 2005 安装 CPPUnit?

我想开始做一些单元测试,但是我对如何设置 CPPUnit 感到非常困惑。我在网上查看了各种教程和指南以了解该做什么,但该做什么有很多变体。我尝试了几种方法,但似乎都没有奏效。如果有人能让我朝着正确的方向前进,那么我将非常感激。我目前正在使用 Visual Studio 2005,我的大多数应用程序主要是 MFC 我还创建了相当数量的 .net 应用程序,所以理想情况下我希望它适用于两者。我是一个巨大的新手,所以在解释时请尽量减少技术术语,因为我可能不会理解它。

0 投票
1 回答
1518 浏览

c++ - 使用 cppunit 类的编译源文件出错

我使用以下命令在我的 kubuntu 11.10 上安装了 cppunit 库:

sudo apt-get install libcppunit-1.12-1 libcppunit-dev libcppunit-doc sudo apt-get install libcppunit-subunit-dev libcppunit-subunit0

在此之前我运行:apt-cache search cppunit命令,结果:

我有一个用于学习单元测试的简单源文件:

但是当我使用 g++ 编译我的 cpp 文件时,出现以下错误:

有什么问题 ?

0 投票
1 回答
2015 浏览

c++ - 在现有项目中创建 CPPUnit 测试需要哪些 .cpp 和 .h 文件?

我希望在我的应用程序中添加一些测试,但是我不知道如何执行此操作以及需要什么。我已经能够通过创建测试本身来运行基本测试,但我不能通过将其添加到项目中来做到这一点。如果我创建了自己的测试项目,以下是有效的测试。

测试1.h

测试1.cpp

CPPUnitMain.cpp(取自 CPPUnit 示例文件夹)

0 投票
1 回答
825 浏览

c++ - CPPUnit 如何编写测试?

好的,我基本上想开始并编写一些 CPPUnit 测试,但我不知道如何去做。在这里,我有一些代码基本上为关联的按钮组和位置参数获取指向菜单按钮的指针,我将如何为此创建测试?

作为对@Fabio Ceconello 的回复,是否可以为这样的代码设置一些测试?