问题标签 [cpputest]

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 投票
6 回答
52840 浏览

c++ - Undefined reference to operator new

I'm trying to build a simple unit test executable, using cpputest. I've built the cpputest framework into a static library, and am now trying to link that into an executable. However, I'm tied into a fairly complicated Makefile setup, because of the related code.

This is my command line:

I'm getting many errors like the following:

I can't figure out what's causing this. Don't I get operator new for free with C++?

0 投票
2 回答
1003 浏览

c - CppUtest 示例链接错误

为什么我会收到这些错误,我该如何解决?

0 投票
2 回答
2096 浏览

c++ - CPPUTest 调试 - C++

我正在学习 TDD 并在 Eclipse 中使用 CppUTest。有什么方法可以调试我的代码得到一个烦人的分段错误。

谢谢

0 投票
2 回答
4792 浏览

c - 单元测试 C 模块静态变量

我有一个 C 模块,我想稍微重构一下。有一些未隐藏的全局变量和结构(在 module.h 文件中)。我在一些测试用例中使用了这个变量,但没有在其他地方使用,所以我认为将它们设置为静态是个好主意。在我的测试用例中,我将这些变量外部化并填充测试值。但如果它们是静态变量,我无法从测试用例中找到它们。我不想编写 getter 和 setter 方法并将其放入 .h 文件,因为我想隐藏这些变量。

我知道如果我将 .c 文件包含到我的测试用例中,我可以看到静态变量。有没有其他方法来填充这些变量?

我用的是cygwin和gcc,测试框架是CppUtest。

提前致谢。

0 投票
2 回答
4442 浏览

c - 为什么在链接档案时会出现“多重定义”错误?

我正在使用 CppUTest 测试fornol.c源文件中定义的 C 代码。该文件定义了主要的生产main()函数。

我也有一个AllTests.cpp文件,它也有一个main()功能,但main()应该只在运行单元测试时使用。

AllTests.cpp被编译成.o文件,而fornol.c被编译成libfornol.a档案。

然后 CppUTest 尝试将所有内容链接在一起,但这是我得到的:

看起来好像在存档中main()定义和存在的函数与在中定义的冲突。但我的理解是,仅当/当尚未引用给定符号时才搜索存档/库文件。因此,如果所有定义都在存档/库文件中,则多次定义相同的符号应该不是问题。fornol.clibfornol.amain()AllTests.cpp

我在这里做错了什么?

0 投票
1 回答
1931 浏览

xcode4 - CppUTest 示例构建失败

我是mac的新手!我下载了 xcode4.2 并尝试构建 CppUTest-v3

1)当我做时,我有以下日志

我发现我可以使用 llvm make 命令构建

2)然后我 cd 到示例目录。我收到以下错误。我试图调查,但找不到解决方法。您的帮助将不胜感激。

0 投票
1 回答
2342 浏览

c++ - gcc/linux:CppuTest 使用静态向量显示内存泄漏,误报?

在 xxxx.h 文件中:

在 xxxx.cpp

这些向量在静态回调函数中处理,因此它们也必须是静态的。

在 cpputest 中,当尝试在这些向量中的任何一个中添加某些内容时,会发生故障:

添加到向量中的东西是自动变量,它发生在正常函数中:

向量在测试用例结束时被清除:

(yyyy() 返回一个指向单例 xxxx 对象的指针)

页面http://blog.objectmentor.com/articles/2010/02/04/cpputest-recent-experiences 讨论了相同类型的内存泄漏:

“这是误报。这是一次性分配,是 C++ 内存分配和静态初始化的副作用。”

所以我的问题是:这种失败真的是误报吗?

br 爱斯科

0 投票
1 回答
509 浏览

unit-testing - 在测试遗留 C 代码时尝试使用 TEST_GROUP_BASE 共享测试组时出现链接器错误

我们试图通过使用 TEST_GROUP_BASE 创建共享基类来减少代码重复。当我们尝试在多个测试类中使用此 TEST_GROUP_BASE 时,我们会收到链接器警告,抱怨 'getwchar' 和 'putwchar':不一致的 dll 链接和错误报告这两个函数的多个定义,以及许多其他 'char'/ 'wchar' 对(例如 strchr/wcschr、strpbrk/wcspbrk)。如果我只包含一个使用 TEST_GROUP_BASE 宏的测试文件,则不会出现链接器错误。

基类在 .h 文件中定义为 TEST_BASE,所有成员函数都内联。然后,此 .h 文件包含在派生的测试文件中,其中 TEST_GROUP_BASE 宏用于合并共享的 TEST_BASE。我错过了什么吗?

我没有找到任何使用 TEST_GROUP_BASE 的例子,所以我不确定我是否错过了一个关键的配置。我们正在测试遗留 C 代码,但所有对生产代码的引用都在 extern "C" 大括号内进行,因为我们的简单测试通过了,这表明 c/c++ 链接正常。

任何人都可以提出任何可能的原因,或者指出我在其他地方如何使用 TEST_GROUP_BASE 的任何开源示例的方向吗?

开发环境为VS2010。

0 投票
1 回答
542 浏览

gcc - 运行 CPPUTest 时出现 libstdc++-6.dll 错误

我正在尝试使用 CPPUTest 来学习 TDD 以进行嵌入式 C 单元测试。我能够在 eclipse CDT 上使用 gcc 编译基本的 C 代码。我试图编译 CPPUTest 附带的 c++ 文件。我尝试运行的机器是 64 位 Windows 7 操作系统。我已经从 sourceforge 为 gcc 安装了 i686-w64-mingw32 二进制包。

测试 cpp 文件的编译和使用 make all 的链接是成功的。但是当测试开始运行时,我得到了以下错误。

“程序无法启动,因为您的计算机中缺少 libstdc++-6.dll。请尝试重新安装程序以解决问题。”

但是,我在 mingw/mingw/lib 下找到了 libstdc++6.dll。我已将此添加到路径中。它似乎仍然没有运行测试。

任何解决此问题的建议都会有所帮助。

0 投票
1 回答
569 浏览

c++ - Eclipse+CDT:在测试项目中构建和链接测试项目的文件

尝试在 Eclipse 中设置嵌入式 TDD 环境:

  • 为 GNU-ARM 交叉编译设置的应用程序项目
  • 通过 Cygwin 构建 CppUTest 的 CppUTest 项目(工作得很好)
  • 用于容纳单元测试、测试组、测试运行器的测试项目

我遇到的麻烦是测试项目将其单元测试构建到 .o 文件中,但不会构建经过测试的 .h/.c 文件,因此链接器在对丢失对象的未定义引用时失败。

我不能依赖应用程序项目或该项目的构建中的目标文件,因为它们被交叉编译为 ARM EABI 对象。我需要测试项目来构建应用程序项目的源文件。有没有办法告诉 Eclipse 这样做,或者我是否需要设置一个预构建脚本来将测试文件复制到测试项目中的源代码树中?