Frage
Ich versuche zu verstehen, wie die Google-Prüfadapter Arbeit.
Sprich ich habe den folgenden 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);
}
Wenn ich kompilieren, warum es sagen "myPhrase1" und "myPhrase2" in der TEST_F nicht deklariert werden?
Lösung
myPhrase1
und myPhrase2
sind lokal für die Setup-Methode, nicht die Testvorrichtung.
Was man wollte, war:
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);
}
Andere Tipps
myPhrase1
und myPhrase2
werden als lokale Variablen in der SetUp
Funktion deklariert. Sie müssen sie als Mitglieder der Klasse deklarieren:
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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow