gpt4 book ai didi

C++单元测试检查输出是否正确

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:20 25 4
gpt4 key购买 nike

如果我想编写自己的 test.cpp 来检查另一个 .cpp 文件是否按照我希望的方式输出,是否可以在不显式打印的情况下执行此操作?

换句话说,有没有什么

assert(output_of_file_being_tested, "this is the correct output");

其中 output_of_file_being_tested 是应该被“cout”的东西。

最佳答案

解决方案不是对输出流进行硬编码。以某种方式将对 std::ostream 的引用传递给您的代码,并使用 std::stringstream 在测试环境中收集输出。

例如,这是您的“另一个 .cpp”文件的内容:

void toBeTested(std::ostream& output) {
output << "this is the correct output";
}

因此在您的生产/发布代码中,您可以将 std::cout 传递给函数:

void productionCode() {
toBeTested(std::cout);
}

在测试环境中,您可以将输出收集到一个 sting 流并检查其正确性:

// test.cpp
#include <sstream>
#include <cassert>

void test() {
std::stringstream ss;
toBeTested(ss);
assert(ss.str() == "this is the correct output");
}

关于C++单元测试检查输出是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com