c++unit-testingtestinggoogletesttest-fixture

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?


Solution

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