从c中的简单单元测试开始
发布时间:2020-12-16 10:27:47 所属栏目:百科 来源:网络整理
导读:我的老板告诉我为我写的小c文件(foo.c)编写单元测试.我在网上看了很多关于单元测试的背景知识,比如只测试一个函数并使测试完全自动化,但我没有找到任何关于如何实现实际单元测试的教程.我尝试了以下方法,但失败了. /*foo.c*/ #include foo.h #if UNIT_TESTIN
我的老板告诉我为我写的小c文件(foo.c)编写单元测试.我在网上看了很多关于单元测试的背景知识,比如只测试一个函数并使测试完全自动化,但我没有找到任何关于如何实现实际单元测试的教程.我尝试了以下方法,但失败了.
/*foo.c*/ #include foo.h #if UNIT_TESTING #define main example_main #endif int foo1(...){...} int foo2(...){...} int main(int argc,char **argv) { foo1(...); foo2(...); } /*test_foo.c*/ #include "foo.h" void main(int argc,char **argv) { int i = example_main(argc,argv); return; } /*foo.h*/ int example_main(int argc,char **argv); 作为cmd,我使用: gcc -Wall -pedantic foo.c test_foo.c -DUNIT_TEST=1 -o test_foo.out 我得到以下错误: test_foo.c: warning: return type of ‘main’ is not ‘int’ test_foo.c: In function ‘main’: test_foo.c warning: unused variable ‘i’ /tmp/ccbnW95J.o: In function `main': test_foo.c: multiple definition of `main' /tmp/ccIeuSor.o:foo.c:(.text+0x538b): first defined here /tmp/ccbnW95J.o: In function `main': test_foo.c:(.text+0x17): undefined reference to `example_main' collect2: ld returned 1 exit status 我做错了什么?或者您会推荐另一种单元测试方法. 谢谢! [更新] [更新/澄清] 解决方法
单元测试不仅包括编写和运行测试用例,还包括报告.我强烈建议你使用像
cunit这样的框架.除此之外,单元测试最好在构建到
continuous integration进程后运行,以便在开发过程中尽早发出更改.使用cunit,您可以生成可以在Web服务器中分析和显示的XML报告(大多数时候在XSLT的帮助下).做自己的怪癖会有效,但随着为测试添加越来越多的功能,除非你使用一些既定的框架,否则你将重新发明轮子.
另一个评论:我永远不会混合生产代码和测试代码.使用单独的项目,否则您将难以跟踪源代码存储库中的实际产品更改,并通过大量测试更改来填充您的历史记录. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- iphone – – [__ NSPlaceholderArray initWithObjects:co
- React Native Android Release Build失败 – Gradle
- 探究 Flex 组件的生命周期
- sax解析XML文件
- c# – 将数据从非托管代码传递到托管代码
- postgresql – Postgres中的INDEX?
- c# – 从List返回较小的向量
- cocos2dx3.2 某些UI白屏或使用ClippingNode造成部分手机白屏
- macos – 从C/C++程序在Mac OS X上对进程进行采样
- linq to DataTable group by用法(VB.Net语法)