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

unit-testing - cpputest 中的 CppUTest 和 CppUTestExt 库

我正在使用 cpputest 库来测试我的应用程序。我正在使用scons。当我调用 SConScriptUtest 时,我收到以下错误:

找不到 -lCppUTest 找不到 -lCppUTestExt

这是我已经包含了查找 CppUTest 和 CppUTestExt 的路径:

LIBPATH 指向您的库所在的位置: testenv.Append(LIBPATH = ['../cpputest/lib'])

我的 ../cpputest/lib 路径同时具有 CppUTest.lib 和 CppUTestExt.lib

那么为什么不收呢?

0 投票
0 回答
420 浏览

c - C单元测试常用做法

例如,我的生产代码(比如说它构建为可执行文件)有

对于单元测试,我使用的是 CppUTest。如果我用 A 的真实代码测试 B,那么

  1. 我需要真正实现A,
  2. 我们可能无法从 func_a() 产生所有不同的可能输出。
  3. 如果 func_a() 调用其他模块的函数,则很难发现/设置函数调用链深处的所有情况。
  4. 也许这太极端了,但我无法说服人们这种方法与将所有代码链接在一起并简单地从 main() 进行测试有何不同?

但是如果我在测试 B 时模拟 func_a(),那么一旦我开始测试 A,链接器就会抱怨多个定义,因为现在将链接真正的实现。对于这个问题,我看到了两种解决方法

  1. 为每个 file_a.c 和 file_b.c 创建一个单独的测试可执行文件。但是随着生产的增长,这将产生如此多的可执行文件,如果需要一些“真实”和“模拟”组合测试,也会出现复杂情况。
  2. 将生产代码编译为共享库并将其链接到测试可执行文件,然后使用链接时间插入来拦截对实际实现的函数调用。

那么这种场景的常见做法是什么?我确信这是单元测试 c 代码的一个非常常见的场景。

谢谢,

0 投票
1 回答
1283 浏览

html - 当源文件位于其他目录中时,gcovr 不会创建详细报告

当源文件位于我的根目录的相对位置时,我正在尝试从 gcovr 获取正确的 html 输出。

例如(我会提到 gcovr 工作的两种情况,以及它有问题的地方):

案例:1 - gcovr 工作没有问题 我的根目录的结构如下,在我使用 --html --html-details 从根目录运行 gcovr 之后

所以一切正常,我有 html 通用报告(report.html)以及详细报告(report_myfile.html)。

案例:2 - gcovr 无法正常工作 我的根目录的结构如下,在我使用 --html --html-details 从根目录运行 gcovr 之后)

现在如您所见,gcovr 在 gcovr_report/ 目录中生成“report.C”文件

还创建了带有摘要的一般 html 报告 (report.html),但不是我的源文件 "myfile.c" 的详细报告。当我查看 obj 目录时,它会创建以下文件(如下所示):

当我查看

路径解析如下:

但应该是:

gcovr 命令是:

知道我做错了什么吗?

0 投票
1 回答
949 浏览

cmake - 使用 MinGw 编译最新版本的 CppUTest (3.7),缺少 pthreads

我正在尝试在 Windows 中使用 CppUTest,第一步是让它工作,我已经遇到了问题。这些是我尝试过的事情:

第一种方法

使用 CMake,使用 cmake GUI 我可以执行配置和生成命令,并且在输出目录中得到一些东西,但没有二进制文件和库,只有一堆 cmakefile。CMake GUI 说在配置和生成步骤期间一切正常,但是在输出目录中没有生成库(.lib 文件)......我有什么遗漏吗?我以前从未使用过 CMake。

第二种方法

单独使用 MinGW 和 msys,在 Windows 中运行 cmd 并通过在 Windows 终端中键入 sh 来执行 MinGW shell,然后我执行以下命令:

构建过程开始,但失败并显示一条消息,指示在 MinGW 目录中找不到 pthread.h。如果我使用 MinGW 包管理器安装 pthread-win32 包并重复与上述相同的步骤,则构建过程开始但失败并显示一条消息,指示结构 timespec 在 time.h 和 pthread.h 中定义。

我尝试使用 CppUTest 3.6 遵循相同的程序,它工作得很好,我得到了 .lib 文件,所以我想我现在必须继续这样做。

有谁知道如何使用 MinGW 或 CMake 构建 CppUTest 3.7(最新版本)?

0 投票
1 回答
578 浏览

c++ - 代码块和 CppUTest,未定义的参考

我正在尝试使用 CodeBlocks 和 CppUTest 编译以下测试应用程序,但是无论我做什么,我总是会得到undefined reference错误。我用 cygwin 编译了 CppUTest,在我使用 MinGW 的代码块中。

项目目录只有两个文件,main.cpptests.cpp正在尝试编译它。

这是main.cpp文件:

这是tests.cpp文件:

我已经有了这些库libCppUTest.alibCppUTestExt.a现在我必须将它们链接到项目。为此,我尝试了以下方法:

  • 在构建选项中,添加<CppUTest>\include\到编译器的搜索目录。
  • 在构建选项中,添加<CppUTest>\lib\到链接器的搜索目录。
  • 在链接设置中,添加libCppUTest.alibCppUTestExt.a链接库。还尝试了这些库的完整路径。

我认为问题不在于代码块,因为我已经尝试使用我找到的所有指南来链接库,并且我总是得到undefined reference. 我也尝试将这些添加为全局设置,但我得到了同样的错误,undefined reference.

有任何想法吗?

0 投票
1 回答
551 浏览

c++ - 在同一个编译器(vc12)上编译时,是什么导致名称不同的原因?

我目前正在尝试编译 CppUTest 库并将其与我的项目链接。我使用 CMake 为 CppUTest 库创建了一个 Visual Studio 2013 解决方案并构建了它。

但是,当我将创建的 CppUTest.lib 链接到我的应用程序时,我收到一个链接器错误,告诉我它找不到多个符号,例如

??0Utest@@QAE@XZ)

或者

?RunAllTests@CommandLineTestRunner@@SAHHPAPAD@Z

现在,当我在 lib 和选项 /LINKERMEMBER 上使用 dumpbin.exe 时,我得到了库中包含名称的符号列表

??0Utest@@QEAA@XZ

?RunAllTests@CommandLineTestRunner@@SAHHPEAPEAD@Z

所以实际存在的名称与我的项目期望的名称略有不同,我不知道是什么导致了这个问题。是否有任何编译选项会导致这些更改,或者我是否使用不同的编译器,尽管我认为它是相同的?

0 投票
2 回答
906 浏览

c++ - 测试之间的 CppUtest 共享资源,未定义的引用

我相信这是一个简单的问题......我希望virtualLeds在测试组中的所有测试之间共享变量LedDriverTests,这是代码:

当我尝试编译时,出现以下错误:

有任何想法吗?

0 投票
1 回答
148 浏览

c++ - CPPUTEST 内存删除

我有如下代码:

我将 CPPUTEST 与测试代码一起使用,如下所示:

但错误是:“分配/解除分配类型不匹配”

我不知道为什么,请帮忙。提前致谢!

0 投票
1 回答
807 浏览

ubuntu - Ubuntu 14.04 cputest 示例构建失败

我通过以下方式在 Ubuntu 上安装了 cpputest:

现在我正在尝试构建书中的示例,但它失败了:

似乎找不到 apt-get 安装 cpputest 的位置。

我怎样才能弄清楚并指出它?

0 投票
3 回答
1953 浏览

c++ - 检查两个向量是否相等

我有两个向量:

我正在使用cpputest来验证这些向量是否相等:

这是有效的。但是,我想知道我是否不应该使用一些容忍度,因为毕竟我是在比较doubles