jji*_*ang 5 c++ unit-testing assert cout output
如果我想编写自己的test.cpp来检查另一个.cpp文件是否正在输出我希望它输出的方式,那么无论如何都没有明确打印它吗?
换句话说,有什么比如
assert(output_of_file_being_tested, "this is the correct output");
Run Code Online (Sandbox Code Playgroud)
其中output_of_file_being_tested应该是"cout"ed.
解决方案不是硬编码输出流.std::ostream以某种方式将引用传递给您的代码,并用于std::stringstream在测试环境中收集输出.
例如,这是"另一个.cpp"文件的内容:
void toBeTested(std::ostream& output) {
output << "this is the correct output";
}
Run Code Online (Sandbox Code Playgroud)
因此,在您的生产/发布代码中,您可以传递std::cout给函数:
void productionCode() {
toBeTested(std::cout);
}
Run Code Online (Sandbox Code Playgroud)
在测试环境中,您可以将输出收集到sting流并检查它是否正确:
// test.cpp
#include <sstream>
#include <cassert>
void test() {
std::stringstream ss;
toBeTested(ss);
assert(ss.str() == "this is the correct output");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1381 次 |
| 最近记录: |