问题标签 [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.

0 投票
1 回答
1449 浏览

c - 如何使用带有 CTest 的检查库在 C 中进行单元测试

我有一个项目,我想在其中使用检查库进行单元测试。

我当前的项目正在使用 CMake,并具有以下结构:

core-test我有core模块的单元测试。在scrypt-test我将对scrypt模块等进行测试。


与 CTest 一起使用check有意义吗?

如果是:如何将使用的单元测试连接check到 CMake/CTest 项目?我是否需要对 CTest 进行额外配置才能解释check启用的可执行文件的结果?

0 投票
4 回答
1194 浏览

c - 如何使用检查构建单元测试?

我想测试我的 C 代码并决定使用 check 作为测试框架。但我不明白如何编译代码?在本教程中,他们已经有非常大的 makefile,但他们没有解释如何构建它们或我需要什么 gcc 标志。

如何执行我的简单测试?

0 投票
1 回答
2549 浏览

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 中构建应用程序的经验还很少)

0 投票
0 回答
1284 浏览

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 中,这真是令人沮丧。

0 投票
2 回答
16339 浏览

c - 使用 C 单元测试框架 Check without Autotools?

我正在尝试按照官方检查教程进行操作,但它需要 Autotools 的工作知识,而我没有。我希望只是写几个快速测试,我发现这个教程压倒性的。它依赖于 Autoconf、Automake 和一些 Check 宏中的许多魔法。它没有解释 Check 的实际工作原理,以便我可以手动构建测试。

如何在没有 Autotools 的情况下使用 Check?

0 投票
4 回答
1455 浏览

c - Automake、GNU make、检查和(忽略的)模式规则

我有以下 Makefile.am 应该创建foo.hdbfoo.cdb来自foo.h(通过 Python 脚本):

但是,虽然make foo.hdbandmake foo.cdb工作(调用 Python 代码并从 生成foo.hdbandfoo.cdb文件foo.h),make clean check(或两者分开)不能(缺少foo.hdb- 没有这样的文件) - 不调用模式规则foo.hdbfoo.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的答案),其中任何一个都足以让事情正常进行:

  1. (处理)头文件很复杂。由于自动依赖,以编程方式生成的头文件会破坏事情。解决方案是使用BUILT_SOURCES

  2. 但是(处理).c 文件并不复杂。因此,将 corm_foo.c 放在 check_foo.c 前面会触发该文件的生成。因为这也会生成 corm_foo.h,所以一切正常(因为 check_foo.c 现在可以包含 corm_foo.h)。

此外,fceller 对整洁的 makefile 有一些很好的一般观点,并解释了为什么“普通”makefile 可以工作。

0 投票
1 回答
149 浏览

automake - 使用 check 和 autotools 编译问题

我有一些带有check框架的 C 单元测试。

我的Makefile.am样子:

文件结构是(省略了一些文件):

然后我跑make check,它抛出:

怎么了?

0 投票
2 回答
165 浏览

c - 如何使用 C 中的函数编译 llvm 代码文件?

有没有办法在 llvm (*.ll) 中编译使用 C 中的函数的文件?

我使用check C创建了一个测试,并将其编译为:

这样,我使用的是 check 中的库,但我需要生成使用 check 中的库的 llvm 代码。当我尝试这个命令时:

并尝试执行代码:

我收到这个答案:

我认为一个解决方案是做一些事情:

但不支持。

我认为类似的答案可以在:LLVM JIT-compiled program cannot find external functions

0 投票
1 回答
219 浏览

c - 停止 printf 打印两次在 C 中运行检查框架?

  1. 可能对 c 和 c 线程中的一般打印如何发生的深入解释将解决该问题
  2. 在任何时候都没有使用循环和 scanf
  3. 因为我的代码使用检查框架,所以我会假设正在进行一些分叉。
  4. 很可能它与缓冲区有关,所以我使用 fflush(stdout),如果是因为框架内部的某些东西,我会很感激知道框架的人会解释发生了什么。
  5. 检查框架页面 check.sourceforge.net
  6. 如果这可能会有所帮助,请使用 Git 链接https://github.com/batousik/Practical-C2
  7. 链接到构建/测试日志,在第 438 行打印开始https://travis-ci.org/batousik/Practical-C2/builds/53513707

代码示例

打印树函数

}

树->打印功能

样本输出

代码很多,重点在后面!!!应该只有一行,但要打印两行

^^ 此行打印两次

评论:什么是“宏”?这是来自 API

0 投票
1 回答
447 浏览

c - C 分段错误,大小为 4 的无效读取

错误总结:

设置:

功能部分:

拆除:

第 173 行是: