问题标签 [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.
unit-testing - cpputest 中的 CppUTest 和 CppUTestExt 库
我正在使用 cpputest 库来测试我的应用程序。我正在使用scons。当我调用 SConScriptUtest 时,我收到以下错误:
找不到 -lCppUTest 找不到 -lCppUTestExt
这是我已经包含了查找 CppUTest 和 CppUTestExt 的路径:
LIBPATH 指向您的库所在的位置: testenv.Append(LIBPATH = ['../cpputest/lib'])
我的 ../cpputest/lib 路径同时具有 CppUTest.lib 和 CppUTestExt.lib
那么为什么不收呢?
c - C单元测试常用做法
例如,我的生产代码(比如说它构建为可执行文件)有
对于单元测试,我使用的是 CppUTest。如果我用 A 的真实代码测试 B,那么
- 我需要真正实现A,
- 我们可能无法从 func_a() 产生所有不同的可能输出。
- 如果 func_a() 调用其他模块的函数,则很难发现/设置函数调用链深处的所有情况。
- 也许这太极端了,但我无法说服人们这种方法与将所有代码链接在一起并简单地从 main() 进行测试有何不同?
但是如果我在测试 B 时模拟 func_a(),那么一旦我开始测试 A,链接器就会抱怨多个定义,因为现在将链接真正的实现。对于这个问题,我看到了两种解决方法
- 为每个 file_a.c 和 file_b.c 创建一个单独的测试可执行文件。但是随着生产的增长,这将产生如此多的可执行文件,如果需要一些“真实”和“模拟”组合测试,也会出现复杂情况。
- 将生产代码编译为共享库并将其链接到测试可执行文件,然后使用链接时间插入来拦截对实际实现的函数调用。
那么这种场景的常见做法是什么?我确信这是单元测试 c 代码的一个非常常见的场景。
谢谢,
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 命令是:
知道我做错了什么吗?
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(最新版本)?
c++ - 代码块和 CppUTest,未定义的参考
我正在尝试使用 CodeBlocks 和 CppUTest 编译以下测试应用程序,但是无论我做什么,我总是会得到undefined reference
错误。我用 cygwin 编译了 CppUTest,在我使用 MinGW 的代码块中。
项目目录只有两个文件,main.cpp
我tests.cpp
正在尝试编译它。
这是main.cpp
文件:
这是tests.cpp
文件:
我已经有了这些库libCppUTest.a
,libCppUTestExt.a
现在我必须将它们链接到项目。为此,我尝试了以下方法:
- 在构建选项中,添加
<CppUTest>\include\
到编译器的搜索目录。 - 在构建选项中,添加
<CppUTest>\lib\
到链接器的搜索目录。 - 在链接设置中,添加
libCppUTest.a
和libCppUTestExt.a
链接库。还尝试了这些库的完整路径。
我认为问题不在于代码块,因为我已经尝试使用我找到的所有指南来链接库,并且我总是得到undefined reference
. 我也尝试将这些添加为全局设置,但我得到了同样的错误,undefined reference
.
有任何想法吗?
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
所以实际存在的名称与我的项目期望的名称略有不同,我不知道是什么导致了这个问题。是否有任何编译选项会导致这些更改,或者我是否使用不同的编译器,尽管我认为它是相同的?
c++ - 测试之间的 CppUtest 共享资源,未定义的引用
我相信这是一个简单的问题......我希望virtualLeds
在测试组中的所有测试之间共享变量LedDriverTests
,这是代码:
当我尝试编译时,出现以下错误:
有任何想法吗?
c++ - CPPUTEST 内存删除
我有如下代码:
我将 CPPUTEST 与测试代码一起使用,如下所示:
但错误是:“分配/解除分配类型不匹配”
我不知道为什么,请帮忙。提前致谢!
ubuntu - Ubuntu 14.04 cputest 示例构建失败
我通过以下方式在 Ubuntu 上安装了 cpputest:
现在我正在尝试构建书中的示例,但它失败了:
似乎找不到 apt-get 安装 cpputest 的位置。
我怎样才能弄清楚并指出它?
c++ - 检查两个向量是否相等
我有两个向量:
我正在使用cpputest来验证这些向量是否相等:
这是有效的。但是,我想知道我是否不应该使用一些容忍度,因为毕竟我是在比较doubles。