c - 使用 gcovr Linux 和 perl 的自动覆盖测试 C 程序

标签 c linux perl gcov gcovr

我想测试 2 个 C 程序来检查它的覆盖率(行覆盖率和分支覆盖率)。

我在 linux 系统中使用 gcovr。

为此,我编写了一个 Perl 脚本,它将调用 gcc 编译器并从文件中读取输入,然后测试 C 程序的覆盖率。

我有许多以文件形式提供给 C 程序的测试套件,我正在使用 Perl 自动输入并使用 gcovr 获取覆盖率。

当然,我已经使用 system 命令和 perl 中的 backtics 来调用 gccgcovr

第一个 C 程序运行良好,因为程序的输入是从给定的参数中读取的。

但对于第二个 C 程序,我感到困惑,因为该程序只接受键盘输入或简单地说“它正在使用 scanf”。

那么,我们如何通过终端 linux 或使用带有 system 命令的 perl 向仅接受键盘输入 (scanf) 的 C 程序提供输入?

最佳答案

scanf接受来自 stdin 的输入.您可以重定向 stdin当您启动程序并让程序从该文件获取输入时将其写入文件。

重定向是操作系统的一个特性,而不是特定语言的特性。

假设您想启动您的程序,并且您知道该程序将接受“10”、“y”和“n”作为输入。您所要做的就是以任何方式创建一个包含这些行的文件。假设此文件名为 test_1。

然后你用tested_program < test_1启动程序程序将使用“10”、“y”和“n”作为输入。

关于c - 使用 gcovr Linux 和 perl 的自动覆盖测试 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34541244/

相关文章:

c - TI MSP430 中断源

c - 查找 OpenGL 垂直回扫时序

c - const char 数组名称是函数中的 const 值吗?

windows - 连接到剪贴板?

c - 为什么我的 OpenMP 代码性能比串行的差?

linux - 如何创建一个可以扫描文件中特定单词的 shell 脚本?

regex - Perl - 变量插值和反冲(转义)如何在替换正则表达式中工作,特别是替换部分

c - 从 C 中的标准输入读取行的函数未按预期工作

perl - 如何修复 Perl 的 Font::FreeType 编译错误?

perl - 访问 Moose 阵列