我想对一个看起来像这样的类进行单元测试:
template <typename T>
class MyClass {
...
void someMethod() {
T object;
object.doSomething();
}
...
};
我想对这个类进行单元测试,所以我为 T 创建了一个模拟类:
struct MockT {
...
MOCK_METHOD(doSomething, 0, void());
...
};
然后我想在测试用例中使用它:
BOOST_AUTO_TEST_CASE(testSomeMethod) {
MyClass<MockT> myClassUnderTest;
MOCK_EXPECT(???)....;
myClassUnderTest.someMethod();
}
我如何对这个对象做出期望?我的第一个想法是将所有创建MockT
的实例存储在构造函数的静态容器中,然后从析构函数的容器中删除它们。如果对象是用不同于使用它的方法创建的,这将起作用,如下所示:
myClassUnderTest.createTheObject();
MOCK_EXPECT(MockT::findMyObject().doSomething);
myClassUnderTest.useTheObject();
但是为此我需要修改我的类的接口,我真的不想这样做。还有什么我可以做的吗?