我有一个正在使用Catch.cpp测试的C ++项目:
我编译并运行以下文件来运行我的测试:
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include "test1.h"
#include "test2.h"
在不久的将来,我会想要运行更复杂的测试,这需要命令行参数。
换句话说,我想在我的测试运行中应用一些逻辑,能够从内部循环或条件中运行它们并将变量传递给它们。
我找到了这个页面:Supply your own main。
这似乎是一个很好的方向,但我找不到更详细的解释。
可以通过捕获来完成吗?或者有更好的方法来实现我所描述的内容?
答案 0 :(得分:0)
我设法做的是编写自己的main
,解析命令行并将所需参数(在我的情况下为IP)存储在全局变量中。不是最美丽的代码,但做的工作是:
#define CATCH_CONFIG_RUNNER
#include "catch.hpp"
std::string IP;
int main(int argc, char* const argv[])
{
Catch::Session session;
int returnCode = session.applyCommandLine(argc, argv, Catch::Session::OnUnusedOptions::Ignore);
if (returnCode != 0)
return returnCode;
for (auto token : session.unusedTokens()) {
printf("Token: %s\n", token.data.c_str());
IP = token.data;
}
return session.run();
}
然后我将其作为TestRunner.exe [test-case-tag] --MY_IP_HERE
运行。请注意,如果参数前面没有“ - ”,它们就不会出现在unusedTokens
。