Google Test Fixtures
I'm trying to understand how the Google Test Fixtures work.
Say I have the following code:
class PhraseTest : public ::testing::Test
{
protected:
virtual void SetUp()
{
phraseClass * myPhrase1 = new createPhrase("1234567890");
phraseClass * myPhrase2 = new createPhrase("1234567890");
}
v开发者_如何学JAVAirtual void TearDown()
{
delete *myPhrase1;
delete *myPhrase2;
}
};
TEST_F(PhraseTest, OperatorTest)
{
ASSERT_TRUE(*myPhrase1 == *myPhrase2);
}
When I compile, why does it say myPhrase1
and myPhrase2
are undeclared in the TEST_F
?
myPhrase1
and myPhrase2
are local to the setup method, not the test fixture.
What you wanted was:
class PhraseTest : public ::testing::Test
{
protected:
phraseClass * myPhrase1;
phraseClass * myPhrase2;
virtual void SetUp()
{
myPhrase1 = new createPhrase("1234567890");
myPhrase2 = new createPhrase("1234567890");
}
virtual void TearDown()
{
delete myPhrase1;
delete myPhrase2;
}
};
TEST_F(PhraseTest, OperatorTest)
{
ASSERT_TRUE(*myPhrase1 == *myPhrase2);
}
myPhrase1
and myPhrase2
are declared as local variables in the SetUp
function. You need to declare them as members of the class:
class PhraseTest : public ::testing::Test
{
protected:
virtual void SetUp()
{
myPhrase1 = new createPhrase("1234567890");
myPhrase2 = new createPhrase("1234567890");
}
virtual void TearDown()
{
delete myPhrase1;
delete myPhrase2;
}
phraseClass* myPhrase1;
phraseClass* myPhrase2;
};
TEST_F(PhraseTest, OperatorTest)
{
ASSERT_TRUE(*myPhrase1 == *myPhrase2);
}
精彩评论