我正在使用来自 here 的以下示例
考虑我有以下类(class)
#include <iostream>
class Distance {
private:
int feet;
int inches;
public:
Distance() : feet(), inches() {}
Distance(int f, int i) : feet(f), inches(i) {}
friend std::ostream &operator<<( std::ostream &output, const Distance &D )
{
output << "F : " << D.feet << " I : " << D.inches;
return output;
}
friend std::istream &operator>>( std::istream &input, Distance &D )
{
input >> D.feet >> D.inches;
return input;
}
};
我正在使用 Gtest 来测试这个类。
但我找不到更好的方法来测试它。
我可以使用 gtest ASSERT_NO_THROW
中提供的宏,但它不会验证值。
有什么方法可以改用 EXPECT_EQ
吗?
谢谢
最佳答案
Is there any way I can use EXPECT_EQ instead?
您可以使用 stringstream
打印 operator<<
的结果到一个字符串,然后比较该字符串。
https://en.cppreference.com/w/cpp/io/basic_stringstream
TEST( Distance, Output )
{
std::ostringstream out;
Distance d;
out << d;
EXPECT_EQ( "F:0 I:0", out.str() );
}
输入测试类似,只需使用 std::istringtream
相反。
关于c++ - 如何在 C++ Gtest 中测试输入和输出重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31815230/