2015-05-14 64 views
-1

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

任何提示将是一个很大的帮助。

+0

定义“使用控制台输出”。我对最关键的方面的含糊性表示怀疑。 –

回答

3

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

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

一般来说:编写与抽象接口进行交互的代码,这些接口可以被模拟测试,而不是具体的实现,但不能。

+0

根据OP“使用控制台输出”的含义,这可能是已经完成的任务,或者它可能完全不现实(例如,使用ncurses)。我们需要澄清。这是一个原来的问题。 –

+1

@ Cheersandhth.-Alf:OIndeed,如果它使用流以外的东西,那么你需要提供一个不同的抽象。但原理是一样的:与抽象接口进行交互,可以通过测试来模拟,而不是具体的实现,而不能。 –

+0

我的意思是这个。谢谢。 – David

0

我可以为您提供一般方法来使您的代码可测试:您可以做的是将输出流作为参数传递给您的设备,以便在测试设置中您可以传递一个可以做您的检查,并在生产设置的标准输出...