Wie mache ich Google-Test-Klassen mit meinen Klassen Freunden?
Ich habe gehört, es gibt eine Möglichkeit den google-test TestCase-Klassen Freunde zu meinen Klassen, so dass die tests für den Zugriff auf meine private/protected-Elemente.
Wie Sie erreichen, dass?
InformationsquelleAutor der Frage pajton | 2010-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese (direkt von Google Testen, docs...):
Beispiel:
InformationsquelleAutor der Antwort hobbit
Ich weiß, das ist alt, aber ich war auf der Suche für die gleiche Antwort heute. "gtest_prod.h" einfach stellt einen einfachen makro-Referenz-test-Klassen.
So
FRIEND_TEST(FooTest, BarReturnsZeroOnNull);
ist äquivalent zu:Dies funktioniert, weil jeder test ist seine eigene Klasse wie bereits in der vorherigen Antwort.
InformationsquelleAutor der Antwort Ralfizzle
Eine weit bessere Strategie ist, nicht zulassen, dass Freund-tests unter Ihre unit-tests.
So dass Freund-tests Zugriff auf private Mitglieder führen zu einer code-Basis, ist schwer zu pflegen. Tests, Pause, Wann immer eine Komponente, die innere Umsetzung im Detail umgestaltet werden, ist nicht das, was Sie wollen. Wenn zusätzliche Aufwand ist, werden stattdessen in ein design bei dem die Komponenten getestet werden können, über Ihre öffentliche Schnittstelle, erhalten Sie tests, die nur aktualisiert werden müssen, wenn die öffentliche Schnittstelle einer Komponente wird aktualisiert.
Tests unter Berufung auf
gtest/gtest_prod.h
gesehen werden sollte als ein Zeichen für schlechtes design.InformationsquelleAutor der Antwort Martin