Ist Google Test zum Testen von C-Code geeignet?

Lesezeit: 3 Minuten

Daher habe ich gelernt, Google Test für ein C++-Projekt, an dem ich beteiligt bin, zu mögen und zu genießen. Ich bringe gerade ein neues Projekt auf, das reines C (eine Bibliothek) sein wird, und kann bisher keinen Grund dafür erkennen Google Test nicht weiter zu verwenden, obwohl es sich um ein C++-Framework handelt. Ein verfügbarer C++-Compiler ist kein Problem.

Gibt es bestimmte Gründe, warum ich Google Test nicht zum Testen von reinem C-Code verwenden sollte?

Vielen Dank.

  • Ich kann verstehen, warum Sie das tun möchten, gtest ist ziemlich sparsam. Tolle Frage.

    – Matt Tischler

    14. Mai 2011 um 10:37 Uhr

Es ist sogar ziemlich üblich, C-Code mit einem C++-Testframework zu testen das führende Buch zum Thema folgt diesem Ansatz. Ich habe googletest in der Vergangenheit ausgiebig zum Testen von C-Code verwendet und kann es empfehlen.

Ich habe einen Blogbeitrag darüber geschrieben, der nützlich sein könnte:
http://meekrosoft.wordpress.com/2009/11/09/unit-testing-c-code-with-the-googletest-framework/

Wie der gesamte C++-Code von Google verwendet Google Test keine Ausnahmen, sodass der Ausnahmesicherheitsfluss kein Problem darstellt. Solange Ihre Header C++-kompatibel sind (keine C++-Schlüsselwörter verwenden, Symbole mit korrekter Verknüpfung exportieren), sollte es in Ordnung sein.

Benutzeravatar von Zdeno Pavlik
Zdeno Pavlik

Jason, sei dir dessen bewusst!!! 😀

Wie Meekrosoft sagte, ja, es ist möglich. Ich habe auch seine Website benutzt, als ich das versuchte. Es funktioniert, aber es gibt ein großes Problem:

GTest ist ein objektorientiertes Werkzeug und die Sprache C nicht!

Zum Beispiel haben Sie in GTest viele Funktionen (80 % der gesamten API), die ein Objekt als Parameter anfordern, zum Beispiel:

EXPECT_CALL(turtle, PenDown())              // turtle is object(class) and PenDown() is method of that object
      .Times(AtLeast(1));

von der GTest-Website gmock_for_dummies.md
Sie verwenden also nur Makros wie “expected_equal”, “expected_bigger_than” und so weiter …

Ich möchte Ihnen ein Tool empfehlen CMocka (oder einige andere C-Unit-Testwerkzeuge). Es stammt ebenfalls von Google (geändert von einer Gruppe von Nicht-Google-Entwicklern) und wurde direkt für die Sprache C erstellt. Ich verwende dieses, wenn ich Quellcode vom Typ C testen möchte.

Ich hoffe das hilft.. 🙂 Schönen Tag noch.. 🙂

  • EXPECT_CALL ist nicht in GoogleTest definiert, sondern in GoogleMock (ein Mock-Framework – kein Unit-Testing-Framework). GoogleTest definiert Makros wie EXPECT_EQ und EXPECT_TRUE, die sich perfekt zum Testen von prozeduralem Code (nicht-OO) eignen. Ich verwende es derzeit für ein Projekt und es funktioniert gut.

    – weberc2

    14. März 2015 um 18:08 Uhr

Ich dachte nur, ich würde einen weiteren Punkt hinzufügen: Da gtest C++ ist, werden Sie Ihre zu testenden C-Header als C++ analysieren. Dies bedeutet, dass die Tests nicht garantieren, dass die Header von C konsumierbar sind. Ich bin kürzlich bei einer C-Bibliothek, die ich baue, darauf gestoßen.

Ich konnte keinen nennen. Ich denke, es wird einige Dinge geben, die Sie in “normalem” CEg nicht haben. Ich denke, die Testfälle werden von einer bestimmten Klasse abgeleitet. Aber innerhalb des Tests können Sie testen, was Sie wollen, und warum also nicht C?

1419430cookie-checkIst Google Test zum Testen von C-Code geeignet?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy