我正在使用Gmock进行测试。我得到了一个所有方法都是静态的类。 例如
class A
{
static int Method1(int x,int y){return (x+y)};
};
如何使用Gmock测试此类。 请帮帮我。 感谢
答案 0 :(得分:0)
如果不修改代码,则无法执行此操作。但是您可以将应用程序与存根对象链接起来。只需创建另一个“A类”实现并将其与您的测试应用程序链接。
答案 1 :(得分:0)
你可以通过创建独立模拟类来实现,它不会从你需要模拟的类中派生出来。以下是您将如何做到这一点。
步骤-1:注释具有静态功能的类
// Comment the class
/*
class A
{
static int Method1(int x,int y){return (x+y)};
};
*/
步骤2:创建一个与A
同名的Mock类,并模拟其中的Method1
。请注意,它不是源自原始类
class A {
public:
MOCK_METHOD2(Method1, int(int x, int y));
};
让我们假设使用静态函数的类需要模拟它UsingA
。以下是它的编写方式。
class UsingA {
A &a1;
public:
UsingA(A & _a1) : a1(_a1) {}
int CallFn() {
// Original function that needs to be commented
// return a1::Method1(10,25);
return a1.Method1(10, 20);
}
};
然后,您将如何编写测试
TEST(MyMockTest, Method1Test) {
A mstat;
UsingA ua(mstat);
EXPECT_CALL(mstat, Method1(_,_))
.Times(1)
.WillOnce(Return(100));
int retVal = ua.CallFn();
EXPECT_EQ(retVal,100);
}
可能不是最好的方式,但服务器的目的。希望它有所帮助