我正在寻找一种方法来删除位于同一 C 文件中的辅助方法。有没有什么方法可以在不修改源文件的情况下做到这一点?我正在考虑使用 #define
将方法 b
替换为 b_stub
方法,但我认为这最终会重命名方法b
这是一个示例用例:
#include "file.h"
a(){
b();
}
b(){
}
我正在尝试创建一个测试框架,但我希望用户只需包含一个包含框架和 stub 定义的文件。
谢谢。
最佳答案
我不确定我完全理解你的问题。
如果您想调用与 b
不同的例程,那么您可以在编译时执行以下操作:
a() {
#ifdef USE_STUB
b_stub();
#else
b();
#endif
}
或者,如果您总是想调用 b
但希望 b
表现不同,您可以在编译时执行以下操作:
a() {
b():
}
b() {
#ifdef USE_STUB
printf( "I am in the stub version of b()\n" );
#else
printf( "I am in the real version of b()\n" );
#endif
}
或者您可以在运行时执行类似的操作(为简单起见,此处使用全局变量进行显示):
a() {
extern int _use_stub;
if( _use_stub ) {
b_stub();
} else {
b();
}
}
或
a() {
b();
}
b() {
extern int _use_stub;
if( _use_stub ) {
printf( "This is the stub code\n" );
} else {
printf( "This is the real code\n" );
}
}
通过编译时示例,您可以通过更改头文件或 Makefile 定义来来回切换。通过运行时示例,您可以使用命令行选项、环境变量、用户首选项 Pane 或其他任何内容来回切换。
关于c - 单元测试 stub C 辅助方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4882029/