在StackOverflow上阅读了相当多的一些主题之后,我得出结论,我应该采用某种形式的测试驱动开发/单元测试(或至少探索该领域).
而且,由于我们是在谈论Linux下的C代码,我决定放弃检查尝试(我不知道这是否是正确的选择,但如果它没有好我可以尝试别的以后的东西).
但是由于单元测试和单元测试框架的这个概念对我来说是全新的,我开始对一个非常小的测试代码进行一些单元测试(但我完全迷失了,感觉就像我错过了一些东西).
这是我到目前为止所做的,我创建了以下文件:
main.c,一个只调用一个名为my_pow的函数并打印结果的main.
my_pow.c,包含函数my_pow.
my_pow.h
my_pow_test.c,我想我应该在这里放置my_pow函数的单元代码.
(所以"普通程序"是main.c,my_pow.c和my_pow.h.)
这是my_pow.c
#include "my_pow.h"
int my_pow(int a, int b)
{
return (a*b);
}
然后我想在my_pow_test.c中我放了这样的东西:
#include
#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章中的相同,但仍然没有....
有人可以请我朝正确的方向努力吗?
谢谢约翰
更新:没有理由我尝试使用支票我只是觉得我应该从某个地方开始,也许CUnit是一个更好的选择(我想我也会尝试这个,然后做出有根据的选择).
更新:感谢@philippe间接指出在线文档只是事实的一半,澄清文档所述内容的示例代码已经与check包一起安装.在Ubuntu案例中/ usr/share/doc/check/example/tests /
更新:代码示例已创建,以便您通过查看他的第一个版本,然后是第二个版本等开始.这样您就可以了解他如何创建一个非常基本的测试用例/代码,从无到有用的东西传统的TTD方式.
而且由于我的代码被破坏了,我希望单元测试证明这一点,我作了一点欺骗并测试了真正的功能.像这样的东西:
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);
}
但是将来我不会重现stdlibs中的内容:-)
有关:
单元测试C代码
如何测试C代码
C的单元测试框架
测试C的框架
基本单元测试和C,我该如何开始?
取自搜索[c] [unit-testing]
.
您创建了第一个测试用例.现在您需要创建一个测试套件(一组测试用例)和一个跑步者.
我建议你首先尝试编译他们的例子以验证你的环境,虽然他们的文档通过diff(源补丁)介绍新的代码,我觉得这不是很方便.
如果您决定尝试使用另一个框架(我立刻想到了minunit),我可以指向一个" 教程 ".
我更倾向于使用CUnit,它是X-Unit系列测试框架的一部分.
它可以扩展到大型测试套件,并且已经使用了很多年,因此已经成熟.
您没有使用CUnit的任何理由?
HTH
干杯,
抢