Es ist für Personen gedacht, die CUnit als Unit-Test-Framework verwenden. ・ Personen, die Google Test ihrer Umgebung empfehlen möchten ・ Personen, die zu Google Test wechseln und den Betroffenen dessen Nützlichkeit erklären möchten
Es ist für Leute gedacht, die nach einem Testframework suchen, das einfacher zu verwenden ist als CUnit, aber ich denke, der Inhalt ist im Vergleich zu anderen Seiten dünn. Ich kenne GoogleTest bis zu einem gewissen Grad und konzentriere mich darauf, wie ich es anderen empfehlen kann.
Ich denke, es wäre besser, einen Beispielcode zu haben, aber ich werde ihn hochladen, wenn es nötig ist.
GoogleTest ist wie CUnit ein Unit-Testing-Framework. Alle Handbücher sind online verfügbar (obwohl ich denke, dass CUnit diesbezüglich auch solche hat). http://opencv.jp/googletestdocs/primer.html
Ich habe 1.8.0 von hier heruntergeladen und verwendet. https://github.com/google/googletest/releases
Ich habe versucht, sie in der Reihenfolge aufzulisten, in der ich denke, dass der Effekt aus Sicht des Entwicklers großartig ist. Wenn Sie in dieser Reihenfolge erklären, werden Sie es sicherlich verwenden wollen. Wenn Sie anderen Personen als Entwicklern die Nützlichkeit erklären, ist der Punkt, der aus Sicht des Projektmanagers "kurz geschrieben" werden kann, der Wartungsaufwand des Tests, und der Punkt, dass "Installation aus Sicht des Umgebungsmanagers unnötig ist", wird betont. Es kann ein Verdienst sein zu sein. Wir werden am Ende dieser Seite auch auf die Nutzung vorhandener CUnit-Assets eingehen.
・ (Vielleicht) Kann kürzer als CUnit geschrieben werden ・ Ich habe einen Testfall geschrieben, aber nie vergessen, ihn einzulegen ・ Kann ohne Installation verwendet werden ・ Keine Hauptfunktion erforderlich ・ Eine Liste von Testfällen kann ausgegeben werden ・ Es können nur bestimmte Tests ausgeführt werden ・ Setup- und TearDown-Funktionen können für jede Testsuite vorbereitet werden (streng als Testvorrichtung bezeichnet). -Der deaktivierte Test zeigt explizit "Wie viele Tests wurden deaktiviert" an, wenn der Test ausgeführt wird.
Das Folgende wird der Reihe nach erklärt.
CUnit muss nach dem Schreiben eines Testfalls eine AddSuite-ähnliche Verarbeitung hinzufügen. Es ist leicht, den Fehler zu machen, es versehentlich zu schreiben, aber nicht zu testen. Wenn Sie einen Testfall schreiben, wird er von Google Test automatisch in das Testziel aufgenommen.
Es enthält alle CPP-Dateien und -Header. Wenn Sie also die Einstellungen für den Include-Pfad und CPP in das Build-Ziel aufnehmen, können Sie es verwenden, ohne es in / usr / local / lib zu installieren. Nützlich, wenn Sie es ausprobieren und empfehlen möchten. Die detaillierte Methode wird in diesem Artikel erwähnt (http://d.hatena.ne.jp/E_Mattsan/20120215/1329311774), used-src ist jedoch derzeit nicht in der Release-Version enthalten, sodass Folgendes implementiert ist. Ich musste.
fuse_gtest_files.py
Natürlich können Sie es auch installieren und verwenden.
Da GoogleTest es vorbereitet hat, können Sie es verwenden, indem Sie es einfach in das Build-Ziel aufnehmen.
Siehe unten für Details. http://opencv.jp/googletestdocs/advancedguide.html#adv-listing-test-names http://opencv.jp/googletestdocs/advancedguide.html#adv-running-a-subset-of-the-tests
In CUnit habe ich Erfahrung damit, teilweise #if 0 zu verwenden und den Teil zu überladen, in dem der Testfall definiert ist.
Siehe unten für Details. http://opencv.jp/googletestdocs/primer.html#primer-test-fixtures
Welche Art von Initialisierung sollten die Testfälle in dieser Testsuite zuerst sein, welche Art von Bereinigung sollte durchgeführt werden? Ich denke, dass es einfacher zu lesen sein wird, weil Sie das in die Deklaration der Testsuite schreiben können.
Siehe unten für Details. http://opencv.jp/googletestdocs/advancedguide.html#adv-temporarily-disabling-tests
Wenn es #if 0 ist, kann es eines Tages vergessen werden. Im Fall von "Es wird NG sein, weil es jetzt nicht implementiert ist. Aber ich habe vorerst einen Test durchgeführt, deshalb möchte ich es testen, sobald es implementiert ist." Ich denke, es ist eine gute Idee, es auf "expliziten Invalidierungstest" zu setzen.
Erfordert Kenntnisse in C ++, aber nur die Fähigkeit, Klassen zu definieren, und über rudimentäres Wissen wie externes "C". Ich kann mir keine Nachteile mit CUnit vorstellen.
-Notwendig, -lpthread anzugeben -Ich habe die CPP-Quelle mit gcc anstelle von g ++ erstellt
Es scheint verschiedene nützliche Funktionen zu geben, aber wenn der Entwickler sie zu frei verwendet, werden knifflige Tests erstellt oder sie werden außer Kontrolle geraten. Ich denke, es ist gut zu entscheiden, welche Funktionen verwendet werden sollen und welche nicht.
Was passiert mit Testfällen, die nach der Migration zu Google Test in CUnit geschrieben wurden? Wirfst du es weg? Ich denke, dass die Frage immer vom Manager gestellt wird. Aus der Schlussfolgerung ist es unmöglich, es mit null Arbeitskräften umzuleiten, aber es kann mit einer kleinen mechanischen Modifikation verwendet werden. Wenn Sie auch in Zukunft weitere Tests durchführen, können Sie erklären, dass es sich um eine Investition handelt, die sich durch die Steigerung der Produktionseffizienz amortisiert.
An den CUnit-basierten Testfällen müssen einige Änderungen vorgenommen werden. Ich werde im Detail schreiben, wenn es nötig ist, aber notiere, was ich getan habe.
Löschen oder deaktivieren Sie die Hauptfunktion, AddSuite, AddTestCase-Verarbeitung usw.
void testcase01(void){
Zu
TEST(testcase01){
Oder
TEST_F(testName, testcase01){
Dies wird abhängig von der Anzahl der Testfälle überlastet. Es ist eine mechanische Arbeit, also scheint es, dass Sie es mit einem Skript usw. tun können, aber wenn Sie sich dieser Ersatzarbeit nicht widmen können, geben Sie bitte auf ...
#define CU_ASSERT EXPECT_TRUE
#include "testCaseForCUnit.c"
Für Google Test.
Ich habe es geschrieben, während ich dachte, dass es nicht nötig war, also denke ich, dass es einige Punkte gibt, die schwer zu verstehen sind. Gib mir einen Beispielcode! Ich werde es aktualisieren, wenn es so etwas gibt. Bitte vergib mir den ersten Beitrag ...
Recommended Posts