需要有关如何测试传递给函数的ostream的帮助/建议

时间:2011-09-13 12:42:34

标签: c++ testing

我有一个函数可以传递给它的ostream。我需要测试ostream以确保它能够正常工作。我将print语句放在带有catch语句的try块中以捕获所有异常。现在要测试这是否有效,我需要一些帮助来创建一个糟糕的ostream来传递函数。

我试过了:

filebuf buffer;
ostream& out = ostream(&buffer);
test1.print(out);

但是当我测试它时,我无法收到要打印的错误消息。什么是创建一个坏的ostream传递给函数的更好方法。

另外,有没有比使用try-catch块更好的方法来检查ostream?

2 个答案:

答案 0 :(得分:2)

ofstream如何对任何文件不开放?

答案 1 :(得分:2)

Streams一般不会在异常工作时抛出异常,因此无论操作是否成功,我都不希望打印出错误消息。

ios基类有一个名为exceptions的函数可以用来控制它,但编写一个改变参数状态的函数是相当反社会的,所以你可能必须确保恢复它(即使它抛出异常...)

在流上测试操作成功的常用方法是使用if。如果一切正常,则流计算为真值,否则为false值 - 我指的是关于条件的值为true / false的值,而不是booltrue或{{ 1}}。

准确地说,如果设置了failbit或badbit,则为false。当且仅当至少设置了其中一个操作时,最后一个操作“不起作用”。