Google测试C ++检查流是否为空

时间:2013-04-10 03:23:37

标签: c++ unit-testing stream googletest

我有一个Reference构造函数,它接收一个流作为参数。

Reference::Reference(std::istream& p_is)
{}

如果流非空,我必须使用Google Test检查单元测试。 我已经检查了Google我能做什么,但我找不到任何东西。

我的问题是:你知道怎么做,或者你有一些提示给我。

致以最诚挚的问候,

3 个答案:

答案 0 :(得分:2)

必须始终初始化引用以引用有效的对象或函数。未绑定到有效对象或函数的引用会产生未定义的行为。如果需要传递空值,请使用指针,而不是引用。

答案 1 :(得分:0)

正如Obvlious船长所指出的,你不能引用无效的对象/功能。您可以将其作为指针传递,或者只调用构造函数if(!p_is.good())如果您不受Google Test的限制(对不起,我不熟悉Google Test的功能,所以我可能只是重复已经说过的内容)

答案 2 :(得分:0)

也许您应该重新考虑为什么您认为需要测试NULL引用。它更容易搞乱指针而不是引用。

例如,这是崩溃

int *p;
if(true)
{
  int x;
  p = &x;
}

*p = 3;//runtime error

但不能通过引用发生,因为必须为引用赋值,其值在同一范围内。

但是,有些情况下可能会发生崩溃并且检查有用:

 int* p = 0;
 int& ref(*p);
 int i(ref);  // access violation here

但是你可能想要检查指针,如

int* p =0;
if (p)
{
  int& ref(*p);
  int i(ref);
}

因此,如上所述,您负责在代码中初始化引用。如果你的初始化是指针的指针,如int& ref(*p);,只需检查指针。

HTH

相关问题