我刚开始学习googletesting而且我正在玩它。 我想使用参数化测试来检查类的函数成员返回的值是否应该是它。 我已经声明了一个名为'myClass'的类,其中我使用构造函数设置变量的值,并且我还有一个公共函数'retA()',它返回它的值。
然后我声明了一个fixture类,在其中我创建了一个'myClass'的对象(obj),用构造函数实例化成员a并将obj.retA()函数的值赋给int值'result'。然后我写了一个'TEST_P',其中我正在检查结果是否是我期望的结果并实例化TEST_P。然后在主要的我开始所有测试。
当我只传递不应该使测试失败的参数时,我的测试失败了,我不明白为什么:((我认为结果应该是3)
请帮我澄清一下。谢谢。
#include "stdafx.h"
#include "gtest\gtest.h"
#include "gmock\gmock.h"
#include "Tests.cpp"
class myClass
{
private:
int a;
public:
myClass() {}
myClass(int a) { a = this->a; }
void setA(int val) { a = val; }
int retA() { return a; }
};
class myFixture : public ::testing::TestWithParam<int>
{
public:
int result;
myFixture()
{
myClass obj( GetParam() );
result = obj.retA();
}
};
TEST_P(myFixture, Test1) {
// Inside a test, access the test parameter with the GetParam() method
// of the TestWithParam<T> class:
ASSERT_EQ(3, result);
}
INSTANTIATE_TEST_CASE_P(
InstantiationName, myFixture, ::testing::Values(3);
);
int main(int argc, char** argv)
{
::testing::InitGoogleMock(&argc, argv);
return RUN_ALL_TESTS();
}
答案 0 :(得分:1)
你做的一切都完全正确。期待小事,很难找到......;)
在您的受测试类(myClass
)中,构造函数this
中的内容被颠倒过来。它应该是这样的:
myClass(int a) { this->a = a; }