如何测试 class 从 std::istream 读取?
How to test class reading from std::istream?
如何模拟std::istream
?我的意思是运算符 >>
。我的测试对象从这个流中读取两个数字(std::istream&
是这个 class 的成员)。我怎样才能测试它?如何在测试中读取这些值?
我想测试这个值,或者只读取测试值中定义的值以进一步测试。
我使用 gmock。
使用依赖注入传递class的一个对象
std::istringstream
给你的对象。创建构造函数
您的 class 需要额外的 std::istream &
参数并将其分配给您的此类成员。
例如:
MyClass
{
public:
MyClass(std::istream &stream, /* other constructor args */) :
stream_(stream)
{
...
}
...
void my_method()
{
int i, j;
stream_ >>i;
stream_ >>j;
...
}
private:
std::istream stream_;
};
然后,在您的测试中,只需创建 istringstream
对象并将其传递给构造函数:
std::istringstream dummyStream("10 20");
MyClass obj(dummyStream, /* other constructor args */);
如何模拟std::istream
?我的意思是运算符 >>
。我的测试对象从这个流中读取两个数字(std::istream&
是这个 class 的成员)。我怎样才能测试它?如何在测试中读取这些值?
我想测试这个值,或者只读取测试值中定义的值以进一步测试。
我使用 gmock。
使用依赖注入传递class的一个对象
std::istringstream
给你的对象。创建构造函数
您的 class 需要额外的 std::istream &
参数并将其分配给您的此类成员。
例如:
MyClass
{
public:
MyClass(std::istream &stream, /* other constructor args */) :
stream_(stream)
{
...
}
...
void my_method()
{
int i, j;
stream_ >>i;
stream_ >>j;
...
}
private:
std::istream stream_;
};
然后,在您的测试中,只需创建 istringstream
对象并将其传递给构造函数:
std::istringstream dummyStream("10 20");
MyClass obj(dummyStream, /* other constructor args */);