基本单元测试和C,我该如何开始?
问题:基本单元测试和C,我该如何开始?
在阅读了 StackOverflow 上的一些帖子后,我得出结论,我应该采用某种形式的测试驱动开发/单元测试(或至少探索该领域)。
由于我们在讨论 Linux 下的 c 代码,所以我决定尝试一下检查(我不知道这是否是正确的选择,但如果它不好,我可以稍后再尝试其他方法)。
但是由于单元测试和单元测试框架的概念对我来说是全新的,我开始对一个非常小的测试代码进行一些单元测试(但无论如何我完全迷失了,感觉就像我错过了一些东西)。
这是我到目前为止所做的,我创建了以下文件:
-
main.c,一个只调用名为 my_pow 的函数并打印结果的 main。
-
my_pow.c,包含函数 my_pow。
-
我的_pow.h
-
my_pow_test.c,我想我应该把my_pow函数的单元代码放在这里。
(所以“正常程序”是 main.c、my_pow.c 和 my_pow.h。)
这是我的_pow.c
#include "my_pow.h"
int my_pow(int a, int b)
{
return (a*b);
}
然后我发现在 my_pow_test.c 我放了这样的东西:
#include <check.h>
#include "my_pow.h"
START_TEST (test_my_pow)
{
/* unit test code */
}
END_TEST
//do I need some sort off main here that calls test_my_pow?
这与中的检查手册第3.1章基本相同,但仍然不是......
有人可以把我推向正确的方向吗?
谢谢约翰
更新:我没有理由尝试使用 check 我只是认为我应该从某个地方开始,也许 CUnit 是一个更好的选择(我想我也会尝试一下,然后做出有根据的选择)。
更新:感谢@philippe 间接指出在线文档只是事实的一半,阐明文档所讨论内容的示例代码已与 check 包一起安装。在 Ubuntu 案例中 /usr/share/doc/check/example/tests/
更新:创建了代码示例,以便您从查看他的第一个版本开始,然后查看第二个版本等等。这样您就可以了解他如何创建一个非常基本的测试用例/代码,从零到有用的东西传统的 TTD 方式。
而且由于我的代码被破坏了,我希望单元测试来证明这一点,所以我作弊了一点,并针对真正的 pow 函数进行了测试。像这样的东西:
START_TEST (test_my_pow1)
{
int resultat = my_pow(3,3);
int math = pow(3,3);
fail_unless ( resultat == math,
"Error on 3^3 != %d (%d)",math, resultat);
}
但是,将来我不会复制标准库中已有的内容:-)
有关的:
-
单元测试 C 代码
-
如何测试C代码
-
C 的单元测试框架
-
C 测试框架
-
基本单元测试和C,我该如何开始?
取自搜索[c] [unit-testing]
。
解答
您创建了第一个测试用例。现在你需要为创建一个测试套件(一组测试用例)和一个runner。
我建议您首先尝试编译他们的示例以验证您的环境,尽管他们的文档通过 diff(源补丁)引入了新代码,我觉得这不太方便。
如果您决定尝试使用其他框架(minunit立即出现在我的脑海中),我可以为您指出“教程”。
更多推荐
所有评论(0)