问题标签 [check-framework]
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.
c - 如何使用带有 CTest 的检查库在 C 中进行单元测试
我有一个项目,我想在其中使用检查库进行单元测试。
我当前的项目正在使用 CMake,并具有以下结构:
在core-test
我有core
模块的单元测试。在scrypt-test
我将对scrypt
模块等进行测试。
与 CTest 一起使用check
有意义吗?
如果是:如何将使用的单元测试连接check
到 CMake/CTest 项目?我是否需要对 CTest 进行额外配置才能解释check
启用的可执行文件的结果?
c - 如何使用检查构建单元测试?
我想测试我的 C 代码并决定使用 check 作为测试框架。但我不明白如何编译代码?在本教程中,他们已经有非常大的 makefile,但他们没有解释如何构建它们或我需要什么 gcc 标志。
如何执行我的简单测试?
c - 构建用于检查测试 C 框架的库
我开始使用检查框架来测试 C 应用程序。为了更好地理解,我浏览了检查包中的示例。它工作正常,但我不需要 automake 工具 - 我想用我自己的 Makefile 编译它(因为我想正确理解检查,我需要将我的最终应用程序用作操作系统的包)。也许我可以在那里使用自动生成的 Makefile,但现在,这将是我必须学习的下一个新东西,而且我准备单元测试的时间有限。(那我当然要学习了解生成Makfile的工具,使用configure等)
使用我的 Makefile 构建应用程序时出现问题,我没有链接对象以进行检查功能:
我发现,在示例应用程序中是带有 obj 的 gcc。check_money-check_money.o
由 gcc 创建的文件:
这是我的问题:它使用依赖项check_money-check_money.Tpo
。该文件是由./configure
我不使用的命令生成的。
如何创建自己的.o
文件以检查是否成功构建?有必要为每个应用程序创建此文件吗?不可能是一个,在共享库的某个地方?
(如果我的问题是“愚蠢的”,我很抱歉,我在 linux 中构建应用程序的经验还很少)
c - 带有检查未定义引用错误的 Eclipse C 单元测试
我对C非常陌生,遇到以下问题:我制作了一个非常小的程序filecopy.c,我想用Check对其进行单元测试,但是当我进行单元测试并构建它时,我得到大量未定义的参考错误,好像 Eclipse 找不到库 libcheck(我通过在项目 - 属性 - C++ 构建 - 设置 - 库中添加“检查”来指定)。
这是我文件中的相关代码:
文件复制.c
文件复制.h
文件copyTest.c
测试代码完全符合检查教程的要求,并且文件复制程序可以自行运行。这是 Eclipse 使用此设置生成的 Makefile:
我告诉 Eclipse 构建 filecopy.c 文件,然后构建 filecopyTest.c 文件,它为我在 filecopyTest.c 内部调用的每个函数提供了一个“对 [function_name] 的未定义引用”(包括没有意义的 fileCopy,因为它包括该函数的标头,甚至不必导入库)。库文件实际上存在于 /usr/lib 中并正确安装(当手动运行 gcc 时,它编译得很好并且似乎可以运行(尽管可能有一些错误;很难说))。
如果您对在 Eclipse 中使用 C 进行单元测试有任何经验,请提供帮助。我非常喜欢 Eclipse 并希望将它用于我的新 C 项目,但我也喜欢测试优先编程,并且不打算在没有测试的情况下为 C 开发项目。我在使用 CUnit 时遇到了同样的问题,并认为 Check 可能会更好,但显然我做错了,作为一个 COMPLETE C 菜鸟,我不明白。我搜索了互联网,发现了多篇关于类似情况的“已解决”文章,但在 Eclipse 上实施他们的解决方案并没有帮助我。我不明白 Eclipse 对 make 文件做了什么,甚至完全不了解链接是什么以及它是如何失败的,但我只想在 Eclipse 中通过单元测试对 C 进行编程,经过数小时尝试解决这个问题,它似乎是一个无法完成的任务。如果您需要更多信息,请告诉我;我使用 Eclipse Indigo 作为参考,它使用 CDT 8.0.2。
提前感谢您为任何人提供的任何帮助。了解单元测试及其有用性,然后了解 C 及其性能,然后得知我无法将两者放在我最喜欢的 IDE 中,这真是令人沮丧。
c - 使用 C 单元测试框架 Check without Autotools?
我正在尝试按照官方检查教程进行操作,但它需要 Autotools 的工作知识,而我没有。我希望只是写几个快速测试,我发现这个教程压倒性的。它依赖于 Autoconf、Automake 和一些 Check 宏中的许多魔法。它没有解释 Check 的实际工作原理,以便我可以手动构建测试。
如何在没有 Autotools 的情况下使用 Check?
c - Automake、GNU make、检查和(忽略的)模式规则
我有以下 Makefile.am 应该创建foo.hdb
和foo.cdb
来自foo.h
(通过 Python 脚本):
但是,虽然make foo.hdb
andmake foo.cdb
工作(调用 Python 代码并从 生成foo.hdb
andfoo.cdb
文件foo.h
),make clean check
(或两者分开)不能(缺少foo.hdb
- 没有这样的文件) - 不调用模式规则foo.hdb
从foo.h
.
换句话说:没有为 check_foo_SOURCES 中列出的文件调用模式规则。
我怎样才能使这项工作?其余的 autotools 基础设施工作正常。通过查看 Makefile,我怀疑问题在于 autotools 如何扩展检查源。
这都是在带有 Gnu make 的 Linux 上。这是Makefile。
[略微更新以反映来自 MadScientist 的帮助]。
稍后更新
以下 Makefile(只是 make,而不是 autotools)工作正常,因此问题似乎与 autotools 和检查支持有关。
(请注意,我已从 xxx.hdb 切换到 corm_xxx.h 等,因此文件扩展名保持正常)。
更多细节
由于它似乎与 CHECK 宏有关,因此这是 configure.ac:
解决方案
好的,总结下面的各种事情,有两个重要问题(一旦我修复了文件扩展名 - 请参阅“普通”makefile和fceller的答案),其中任何一个都足以让事情正常进行:
(处理)头文件很复杂。由于自动依赖,以编程方式生成的头文件会破坏事情。解决方案是使用BUILT_SOURCES
但是(处理).c 文件并不复杂。因此,将 corm_foo.c 放在 check_foo.c 前面会触发该文件的生成。因为这也会生成 corm_foo.h,所以一切正常(因为 check_foo.c 现在可以包含 corm_foo.h)。
此外,fceller 对整洁的 makefile 有一些很好的一般观点,并解释了为什么“普通”makefile 可以工作。
automake - 使用 check 和 autotools 编译问题
我有一些带有check
框架的 C 单元测试。
我的Makefile.am
样子:
文件结构是(省略了一些文件):
然后我跑make check
,它抛出:
怎么了?
c - 如何使用 C 中的函数编译 llvm 代码文件?
有没有办法在 llvm (*.ll) 中编译使用 C 中的函数的文件?
我使用check C创建了一个测试,并将其编译为:
这样,我使用的是 check 中的库,但我需要生成使用 check 中的库的 llvm 代码。当我尝试这个命令时:
并尝试执行代码:
我收到这个答案:
我认为一个解决方案是做一些事情:
但不支持。
我认为类似的答案可以在:LLVM JIT-compiled program cannot find external functions
c - 停止 printf 打印两次在 C 中运行检查框架?
- 可能对 c 和 c 线程中的一般打印如何发生的深入解释将解决该问题
- 在任何时候都没有使用循环和 scanf
- 因为我的代码使用检查框架,所以我会假设正在进行一些分叉。
- 很可能它与缓冲区有关,所以我使用 fflush(stdout),如果是因为框架内部的某些东西,我会很感激知道框架的人会解释发生了什么。
- 检查框架页面 check.sourceforge.net
- 如果这可能会有所帮助,请使用 Git 链接https://github.com/batousik/Practical-C2
- 链接到构建/测试日志,在第 438 行打印开始https://travis-ci.org/batousik/Practical-C2/builds/53513707
代码示例
打印树函数
}
树->打印功能
样本输出
代码很多,重点在后面!!!应该只有一行,但要打印两行
^^ 此行打印两次
评论:什么是“宏”?这是来自 API