如何使用 UnitTest++ 运行单个测试?
如何使用 UnitTest++ 运行单个测试?
我正在按原样运行 UnitTest++。我的 main
函数如下所示:
int main()
{
printf("diamond test v0.1 %s\n\n",TIMESTAMP);
diamond::startup();
UnitTest::RunAllTests();
diamond::shutdown();
printf("press any key to continue...");
getc(stdin);
}
为了调试,我想编写类似 UnitTest::RunSingleTests("MyNewUnitTest");
而不是 UnitTest::RunAllTests() ;
。 UnitTest++ 是否提供这样的函数,如果有,语法是什么?
How do I run a single test with UnitTest++ ?
I am running UnitTest++ out of the box as is. My main
function looks like:
int main()
{
printf("diamond test v0.1 %s\n\n",TIMESTAMP);
diamond::startup();
UnitTest::RunAllTests();
diamond::shutdown();
printf("press any key to continue...");
getc(stdin);
}
For debugging I would like to write something like UnitTest::RunSingleTests("MyNewUnitTest");
instead of UnitTest::RunAllTests();
. Does UnitTest++ provide such a function and if so, what is the syntax?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
尝试将其作为unittest的main()(我实际上将其放入一个文件中并将其添加到unittest库中,以便在链接到库时可执行文件自动使用此main()。非常方便。)
使用参数调用来运行单个测试:
或单个套件
try this as your main() for unittest (I actually put this in a file and added that to the unittest library, so that when linking to the library the executable automatically uses this main(). very convenient.)
invoke with arguments to run a single test:
or single suite
这几乎是正确的。 “测试”实际上是用作链表中的节点,因此当您将其添加到新列表时,您必须更正指针以避免包含比您预期更多的测试。
所以你需要
用
杰弗里代替
This is almost correct. "Test" actually is purposed as a node in a linked list, so when you add it to a new list, you have to correct the pointer to avoid including more tests than you intended.
So you need to replace
with
Geoffrey
如果您告诉 RunTestsIf 名称,它只能运行一套套件。
RunTestsIf can only run one suite if you tell it the name.
您可以通过使用
RunTestsIf
的predicate
参数来完成此操作:如果您没有套件,或者您想搜索所有套件,则可以替换
"MySuite “
与NULL
。You could do this by using the
predicate
parameter ofRunTestsIf
:If you do not have suites, or you want to search all of them, you can replace
"MySuite"
withNULL
.@stijn 给出的答案在测试列表操作中存在错误,因此它通常会运行您未请求的其他测试。
此示例使用谓词函子,还利用 RunTestsIf 提供的内置套件名称匹配。这是正确的,而且简单得多。
The answer given by @stijn has a bug in the test list manipulation, and therefore it usually runs additional tests that you did not request.
This example uses a predicate functor and also exploits the built-in suite name matching provided by RunTestsIf. It is correct and much simpler.
已接受答案中的解决方案对我不起作用。当套件的第一个测试加载到 p 中时,它不会跳转到下一个测试(不知道确切原因)。
我正在使用 Xcode 和 UnitTest++ v1.4
The solution in the accepted answer is not working for me. When the first test of the suite is loaded into p it just won't jump to the next test (don't know exactly why).
I'm using Xcode and UnitTest++ v1.4