我可以通过 boost 测试检查程序的输出吗?
就像在:
void f()
{
cout << "blah" << endl;
}
BOOST_AUTO_TEST_CASE(f)
{
f();
// This would be a beauty
// BOOST_CHECK_PROGRAM_OUTPUT_MATCH("blah");
}
Like in:
void f()
{
cout << "blah" << endl;
}
BOOST_AUTO_TEST_CASE(f)
{
f();
// This would be a beauty
// BOOST_CHECK_PROGRAM_OUTPUT_MATCH("blah");
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,您可以通过将
std::cout
重定向到boost::test_tools::output_test_stream
,它提供了特殊的方法来比较输出。为了确保std::cout
始终正确恢复,您可以使用自定义结构,如以下示例所示。Yes, you can do it by redirecting
std::cout
to aboost::test_tools::output_test_stream
, which provides special methods to compare the output. To make surestd::cout
is always restored correctly, you can use a custom struct, like shown in the following example.我已经关注@Björn Pollex 的回答好几天了。但有一天我发现没有必要这样做。只需使用
boost::test_tools::output_test_stream
。有关详细信息,请阅读 官方文档。
I have followed @Björn Pollex 's answer for some days. But one day I found that it's not necessary to do it like that. Just use
boost::test_tools::output_test_stream
.For more information, read the official documentation.