CPPUnit 访问定义在 c 文件中

发布于 2024-10-20 21:12:56 字数 386 浏览 4 评论 0原文

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

在要测试的代码中,有一些定义在 c 文件中,而不是在 h 文件中。因此无法从代码中的其他位置访问它们。许多定义用于设置数组的大小。

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

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

I am doing some unit test on c code using CPPUnit.

In the code to test there are some defines in c files and not in the h files. So they are not accessable from other places in the code. Many of the defines are used to set the size of arrays.

When I do the unit tests I would like to make them so dynamical as possible meaning that they will still work when the defines are changed before the final release. I've made some loops and stuff to go through the functions using the arrays, so that I test as many times as there are entries in an array etc. But until now I use a copy of the define in my unit test code. So if the defines are changed in the code to test, then they are not changed in the unit test code.

So my main question is, if there is some trick to use just for the unit testing purpose to somehow making the defines global or anything without changing the original source code just to fit the use of unit testing. Maybe a compiler setting? (I am using visual studio 2008).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

栖竹 2024-10-27 21:12:56

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

=== 编辑 ===

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

No, you cannot make a #define in a .c file "global" so that it applies to other C files, any more than you can make a static function global without changing the source. The way to do this is to change the source to put those #defines where they belong, in header files that define interfaces.

=== edit ===

credit to Radek S for the idea of #includeing the .c file. This has limited applicability, but should work for unit tests of functions in that one file, provided that the the original file is not compiled when creating the test executable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文