【发布时间】:2015-03-22 18:40:11
【问题描述】:
我想对一个如下所示的类进行单元测试:
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();
但是为此我需要修改我的类的接口,我真的不想这样做。还有什么我可以做的吗?
【问题讨论】:
标签: c++ unit-testing boost-test turtle-mock