通过 TDD 测试 C++ 控制台输出

Testing c++ console output via TDD

我正在使用测试驱动开发方法编写 C++ 程序。 我有一个使用控制台输出的函数。 我想编写一个能够测试控制台输出是否与预期输出相同的测试。 我看到这可以解决,应该检查一下。但是我在这个论坛上看到的解决方案不是用 c++ 而是用其他语言。我想它也可以用 C++ 完成。

任何提示都会很有帮助。

不要直接写到控制台;写入提供给函数的流。

测试可以提供 stringstream,并从中提取输出。一个真正的程序可以提供cout(或其他东西)来获得真正的输出。

总的来说:编写与抽象接口交互的代码,可以为测试模拟,而不是具体实现,后者不能。

我可以就使您的代码可测试的一般方法向您提供建议:您可以做的是将输出流作为参数传递给您的单元,以便在测试设置中您可以传递一个可以进行检查的打开并在生产中设置标准输出...