我有一个没有默认构造函数的类,但构造函数可能会抛出。我想要一个像这样的测试:
EXPECT_THROW(MyClass(param), std::runtime_error);
但是编译器 ,g++
抱怨没有默认构造函数MyClass
. 然而,以下...
EXPECT_THROW(MyClass foo(param), std::runtime_error);
...工作,并且测试按预期通过。为什么 Googletest 不接受临时对象?
class MyClass
{
public:
MyClass(std::string const& filename);
//...
};
有趣的是,我重构了我的测试,使文件名不在单独的变量中,当被要求检查时,我发现了以下工作:
EXPECT_THROW(MyClass("somefilename"), std::runtime_error);
但是以下没有:
std::string filename("somefilename");
EXPECT_THROW(MyClass(filename), std::runtime_error);