Mit Google-Test möchte ich ein Test-Fixture für die Verwendung in verschiedenen Testfällen angeben. Die Vorrichtung muss Objekte der Klasse TheClass
und ihre Datenverwaltungsklasse TheClassData
zuordnen und freigeben, wobei die Datenverwaltungsklasse den Namen einer Datendatei erfordert.
Für die verschiedenen Tests sollte der Dateiname variieren.Konstruktorargumente für einen Google-Test angeben Fixture
definiert ich folgende Fixture:
class TheClassTest : public ::testing::Test {
protected:
TheClassTest(std::string filename) : datafile(filename) {}
virtual ~TheClassTest() {}
virtual void SetUp() {
data = new TheClassData(datafile);
tc = new TheClass(data);
}
virtual void TearDown() {
delete tc;
delete data;
}
std::string datafile;
TheClassData* data;
TheClass* tc;
};
nun verschiedene Tests sollte das Gerät mit unterschiedlichen Dateinamen verwenden. Stellen Sie sich dies als Einrichten einer Testumgebung vor.
Die Frage: Wie kann ich den Dateinamen aus einem Test angeben, d. H. Wie man einen nicht standardmäßigen Konstruktor eines Fixtures aufruft?
Ich fand Dinge wie ::testing::TestWithParam<T>
und TEST_P
, was nicht hilft, da ich nicht einen Test mit unterschiedlichen Werten, sondern verschiedene Tests mit einem Gerät ausführen möchte.
Sie möchten diese Vorrichtung also selbst ausführen? Der standardmäßige Testlauf von Google Test kann Fixtures mit Parametern nicht instanziieren. –
Ich möchte einen Test (wahrscheinlich 'TEST_F') mit dem Gerät ausführen. Die Antwort ist also, dass es nicht möglich ist? Vielen Dank. – Gregor
Ich denke 'TestWithParam' und 'TEST_P' ist genau das, was Sie brauchen. Suchen Sie in den [Erweiterten Dokumenten] (https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md) nach, wie Sie diese in der Praxis verwenden können. Sie können die zu testende Instanz immer innerhalb des Testfalls instanziieren (ich nehme an, es ist 'TheClass'). –