Datengesteuerte Unit-Tests mit Google Test

Ich schreibe derzeit Komponententests für eine eingebettete Anwendung mitgoogles Unit Test Framework. Jetzt war mein Chef verärgert darüber, dass die Daten, mit denen ich teste (d. H. Die Werte, mit denen ich die Methoden der getesteten Klasse aufrufe), in den Tests fest verdrahtet sind. Er bittet darum, diese Daten aus einer Datei einlesen zu lassen. Sein Argument ist, dass es daher einfacher wäre, einen weiteren Test für einen zuvor vergessenen Eckfall hinzuzufügen. Ich bin nicht so erfahren mit Unit-Tests, aber bisher habe ich es nicht so gemacht. Also versuchte ich herauszufinden, wie ich es am besten machen könnte - auch wenn es eine gute Idee ist, es überhaupt zu tun. Ich bin schnell auf den DDT-Ansatz (Data Driven Testing) gestoßen.

Das Google Unit Test Framework hat eine Funktion, die sie "@" nenne Wertparametrierte Tests ". Damit wird mein Testgerät zu einer Template-Klasse und ich kann Parameter übergeben. Dabei sehe ich jedoch einige Probleme:

Ich habe derzeit ein Fixture pro Testklasse. Aber ich würde ein Gerät pro Testmethode benötigen, da für jede Methode ein anderer Parametersatz erforderlich ist. Dies wird eine Menge zusätzlicher Arbeit sein.Wie ich es sehe, kann ich nur einen einzigen Parameter übergeben. Da ich für meine Tests mehrere benötige (alle Parameter für meine Methode plus die erwarteten Ergebnisse), müsste ich so etwas wie einen Vektor oder eine Karte übergeben. Auch dieses Auf- und Abbauen klingt nach viel Arbeit.

Ich hätte gedacht, dass etwas so ausgereift ist wie das Google Test Framework, um es einfacher zu machen. Sie schreiben jedoch

value-parametrisierte Tests sind praktisch, wenn Sie Ihren Code über verschiedene Eingaben testen möchten (a.k.a. datengesteuertes Testen). Diese Funktion ist leicht zu missbrauchen. Bitte versuchen Sie es mit Ihrem gesunden Menschenverstand!

Zusätzlich gibt es diesen BlogpostTotT: Datengesteuerte Traps, warnt mich auch davor, datengesteuerte Komponententests zu missbrauchen.

Also meine Frage lautet:

Ist es eine gute Idee, datengesteuerte Komponententests durchzuführen?Wie man datengesteuerte Komponententests mit dem Google Test Framework durchführt

Ich bin nicht wirklich an Googletest gebunden und kann im Grunde genommen jeden Rahmen frei wählen, den ich möchte.

BEARBEITE

Ich habe die folgende Aussage in einem FAQ-Eintrag der googletest FAQs gefunden

Google Test bietet noch keine gute Unterstützung für [...] datengesteuerte Tests im Allgemeinen. Wir hoffen, bald Verbesserungen in diesem Bereich vornehmen zu können.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage