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
?
If you find yourself writing two or more tests that operate on similar data, you can use a test fixture. This allows you to reuse the same configuration of objects for several different tests. To create a fixture: Derive a class from ::testing::Test .
The Google Home Test Suite is a web application that allows you to self-test your smart home Action. The Test Suite automatically generates and runs test cases based on the devices and traits associated with your account.
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); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With