Google Test Fixtures
Asked Answered
H

2

24

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?

Howey answered 23/8, 2010 at 16:22 Comment(1)
Another question: <br> why you are using "delete *myPhrase1;"?<br> I think the appropriate method to use delete is "delete myPhrase1;".Pigeonhearted
N
45

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

}
Netty answered 23/8, 2010 at 16:38 Comment(3)
protected, says code.google.com/p/googletest/source/browse/trunk/samples/…Conventual
@BillyONeal Is the implied assumption that the code in SetUp() works? That is, you should use a normal TEST() (not TEST_F() ) for everything (here, the constructor) you are going to use in SetUp()?Jaclin
@DavidDoria I assume SetUp is there for similarity with xunit.Netty
C
4

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);
}
Conventual answered 23/8, 2010 at 16:37 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.