我有一个 C++ 项目,正在使用它进行测试捕获.cpp https://github.com/philsquared/Catch:
我编译并运行以下文件来运行我的测试:
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
#include "test1.h"
#include "test2.h"
在不久的将来,我将想要运行更复杂的测试,这需要命令行参数。
换句话说,我想对我的测试运行应用一些逻辑,能够从内部循环或条件运行它们并将变量传递给它们。
我找到了这个页面:供应您自己的主要 https://github.com/philsquared/Catch/blob/master/docs/own-main.md.
这似乎是一个很好的方向,但我找不到更详细的解释。
这可以通过 catch 来完成吗?或者也许有更好的方法来实现我所描述的?
我设法做的是写我自己的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
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)