我正在使用CPPUnit对c代码进行一些单元测试。
在要测试的代码中,c文件中有一些定义而不是h文件中的定义。因此,它们无法从代码中的其他位置访问。许多定义用于设置数组的大小。
当我进行单元测试时,我希望它们尽可能地具有动态性,这意味着在最终版本发布之前更改定义时它们仍然有效。我已经制作了一些循环和东西来使用数组来完成这些函数,所以我测试了数组中的条目等多次。但是直到现在我在我的单元测试代码中使用了define的副本。因此,如果在要测试的代码中更改了定义,那么它们不会在单元测试代码中更改。
所以我的主要问题是,如果有一些技巧仅用于单元测试目的,以某种方式使定义全局或任何东西而不更改原始源代码只是为了适合单元测试的使用。也许是编译器设置? (我正在使用visual studio 2008)。
答案 0 :(得分:0)
不,你不能在.c文件中创建一个“{1}”“global”,这样它就可以应用于其他C文件,只不过你可以在不改变源的情况下使静态函数全局化。执行此操作的方法是更改源以将#define
置于它们所属的位置,在定义接口的头文件中。
=== edit ===
感谢Radek S提出#define
.c文件的想法。这具有有限的适用性,但应该适用于该文件中的函数的单元测试,前提是在创建测试可执行文件时未编译原始文件。