0

我正在使用 CPPUnit 对 c 代码进行一些单元测试。

在要测试的代码中有一些定义在 c 文件中而不是在 h 文件中。所以它们不能从代码中的其他地方访问。许多定义用于设置数组的大小。

当我进行单元测试时,我想让它们尽可能地动态化,这意味着在最终发布之前更改定义时它们仍然可以工作。我已经使用数组制作了一些循环和东西来遍历函数,因此我测试的次数与数组中的条目一样多。但直到现在我在我的单元测试代码中使用定义的副本。因此,如果在要测试的代码中更改了定义,那么它们在单元测试代码中不会更改。

所以我的主要问题是,是否有一些技巧仅用于单元测试目的,以某种方式使定义成为全局或任何东西,而无需更改原始源代码以适应单元测试的使用。也许是编译器设置?(我正在使用 Visual Studio 2008)。

4

1 回答 1

0

不,您不能将#define.c 文件中的 a 设为“全局”,以便将其应用于其他 C 文件,就像您可以在不更改源代码的情况下将静态函数设为全局一样。这样做的方法是更改​​源以将这些#defines 放在它们所属的位置,在定义接口的头文件中。

=== 编辑 ===

感谢 Radek S 提出#include.c 文件的想法。这具有有限的适用性,但应该适用于该文件中函数的单元测试,前提是在创建测试可执行文件时未编译原始文件。

于 2011-03-09T10:09:42.893 回答