C语言单元测试工具Check使用注意事项

本文介绍了在使用C语言单元测试工具Check时遇到的问题,包括对checked fixture和CK_NOFORK模式的误解。checked fixture并非保存全局状态,而是每个单元测试前创建并销毁,适用于轻量级设置。而CK_NOFORK模式不适用于需要独立地址空间避免数据干扰的测试,可能导致调试时出现奇怪错误。理解这些概念有助于正确使用Check进行单元测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在项目中尝试去向TDD的开发方式靠近,因此接触倒了C语言的单元测试工具Check,模拟Java的JUnit编写而成,功能简单实用,Manual手册就短短两页,在SO上的人气也挺高。

不过也有可能是因为刚接触TDD,所以有些概念产生了一些错误的印象,导致使用Check时也出现了问题,今天碰到的典型问题就是 checked fixture 和 CK_NOFORK 模式结合起来使用时产生。

Manual中是这么解释 checked fixture:

We may want multiple tests that all use the same Money. In such cases, rather than setting up and tearing down objects for each unit test, it may be convenient to add some setup that is constant across all the tests in a test case. Each such setup/teardown pair is called a test fixture in test-driven development jargon.

也就是说,当多个单元测试对象建立和销毁的方式是相同的时候,可以通过向测试用例 Test case(一个测试用例由多个单元测试 unit test 组成)添加一个 checked fixture,它需要传递一个 setup() 和一个 teardown() 用于对象的创建和销毁。通常会配合一个全局变量使用。这样每个单元测试在开始之前都会有该全局变量最初通过setup创建的状态,进而多个测试之间不会产生相互的干扰。

这个“全局变量”让我一开始完全误解了它的意思,还以为它一经创建,状态会一直保存倒最后所有的单元测试完成并通过teardown进行对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值