jiake jiake - 12 days ago 5
C++ Question

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");
}

virtual 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?

Answer

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);

}
Comments