c - 如何在不使用全局变量的情况下将字符串从 main 传递给宏 ParameterizedTest?
问题描述
我使用了框架标准https://github.com/Snaipe/Criterion来编写单元测试。我需要将字符串从 main 传递给宏,它执行源代码并检查结果。我不能使用全局变量。这是完整的代码:
#include <stdio.h>
#include <criterion/criterion.h>
#include <criterion/parameterized.h>
char* g_path_to_dir; //it doesn't work, because global variable is accessible within the same process
struct input_data_t {
const char* path;
};
ParameterizedTestParameters(ArgsForenforce_perms, input_data_for_enforce_perms) {
static struct input_data_t params[] = {
"some_data",
"some_data2"
};
size_t nb_params = sizeof (params) / sizeof (struct input_data_t);
return cr_make_param_array(struct input_data_t, params, nb_params);
}
ParameterizedTest(struct input_data_t *param, ArgsForenforce_perms,
input_data_for_enforce_perms) {
printf("pid of process in ParameterizedTest = %d \n", getpid());
}
int main(int argc, char *argv[])
{
printf("pid of process in main = %d \n", getpid());
g_path_to_dir = argv[1]; //it doesn't work, because global variable is accessible within the same process
struct criterion_test_set *tests = criterion_initialize();
if (criterion_handle_args(argc, argv, true)) {
result = !criterion_run_all_tests(tests);
}
criterion_finalize(tests);
return result;
}
解决方案
推荐阅读
- azure - 让 nginx-ingress 在 Azure 中使用 UDP
- javascript - 如何更改部分的背景?(不是,
) - python - GridSearchCV 忽略训练/测试大小
- regex - 正则表达式查找和替换固定标签内的逗号并使用记事本++更改数字
- c++ - 如何增加 Visual Studio C++ 中的堆栈大小?
- c# - 如何修复应用服务中的 SNAT 耗尽
- node.js - 在带有路由器的vue js导航栏中查找链接的问题
- python - 此网站无法提供安全连接 Google App Engine
- c# - 在静态构造函数中或外部声明静态字段之间的区别
- ios - Flutter 上的 AirPlay IOS