it-swarm-eu.dev

Unit Testing C-Code

Ich habe in diesem Sommer an einem Embedded-System gearbeitet, das direkt in C geschrieben wurde. Es war ein bestehendes Projekt, das das Unternehmen, für das ich arbeite, übernommen hatte. Ich habe mich sehr an das Schreiben von Komponententests in Java mit JUnit gewöhnt, war jedoch ratlos, wie Komponententests für vorhandenen Code (der umgestaltet werden musste) und neuen Code, der dem System hinzugefügt wurde, am besten geschrieben werden können.

Gibt es Projekte, die das Testen von Unit-Code so einfach machen wie das Testen von Unit-Code Java mit JUnit? Jede Einsicht, die speziell für die Embedded-Entwicklung (Cross-Compiling auf die Arm-Linux-Plattform) gilt, wäre sehr willkommen.

825
Paul Osborne

Ein Unit Testing Framework in C ist Check ; Eine Liste der Unit-Testing-Frameworks in C befindet sich hier und ist unten wiedergegeben. Abhängig von der Anzahl der Standardbibliotheksfunktionen, über die Ihre Laufzeit verfügt, können Sie möglicherweise eine dieser Funktionen verwenden.

AceUnit

AceUnit (Advanced C und Embedded Unit) bietet sich als komfortables C-Code-Unit-Testframework an. Es versucht, JUnit 4.x nachzuahmen und enthält reflexionsähnliche Funktionen. AceUnit kann in Umgebungen mit eingeschränkten Ressourcen verwendet werden, z. Embedded Software-Entwicklung, und was wichtig ist, es läuft gut in Umgebungen, in denen Sie keine einzelne Standard-Header-Datei einbinden und keine einzelne Standard-C-Funktion aus den ANSI/ISO-C-Bibliotheken aufrufen können. Es hat auch einen Windows-Port. Es werden keine Gabeln zum Abfangen von Signalen verwendet, obwohl die Autoren Interesse daran bekundet haben, eine solche Funktion hinzuzufügen. Siehe AceUnit-Homepage .

GNU Autounit

Ähnlich wie bei Check, einschließlich der Möglichkeit, Komponententests in einem separaten Adressraum durchzuführen (tatsächlich hat der ursprüngliche Autor von Check die Idee von GNU Autounit ausgeliehen). GNU Autounit verwendet GLib in großem Umfang, was bedeutet, dass für das Verknüpfen und dergleichen spezielle Optionen erforderlich sind. Dies ist jedoch möglicherweise kein großes Problem für Sie, insbesondere wenn Sie bereits GTK oder GLib verwenden. Siehe die GNU Autounit Homepage .

cUnit

Verwendet auch GLib, aber nicht Fork, um den Adressraum von Komponententests zu schützen.

CUnit

Standard C, mit Plänen für eine Win32-GUI-Implementierung. Verzweigt oder schützt den Adressraum von Unit-Tests derzeit nicht auf andere Weise. In der frühen Entwicklung. Siehe CUnit-Homepage .

CuTest

Ein einfaches Framework mit nur einer .c- und einer .h-Datei, die Sie in Ihrem Quellbaum ablegen. Siehe CuTest-Homepage .

CppUnit

Das führende Unit-Test-Framework für C++; Sie können damit auch C-Code testen. Es ist stabil, aktiv entwickelt und verfügt über eine GUI-Oberfläche. Die Hauptgründe, CppUnit für C nicht zu verwenden, sind erstens, dass es ziemlich umfangreich ist, und zweitens, dass Sie Ihre Tests in C++ schreiben müssen, was bedeutet, dass Sie einen C++ - Compiler benötigen. Wenn dies nicht nach Bedenken klingt, sollten Sie dies zusammen mit anderen C++ - Frameworks für Komponententests in Betracht ziehen. Siehe CppUnit-Homepage .

embUnit

embUnit (Embedded Unit) ist ein weiteres Unit-Test-Framework für eingebettete Systeme. Dieser scheint von AceUnit abgelöst worden zu sein. Embedded Unit Homepage .

MinUnit

Ein Minimum an Makros und das war's! Der Punkt ist zu zeigen, wie einfach es ist, Ihren Code zu testen. Siehe MinUnit-Homepage .

CUnit für Mr. Ando

Eine CUnit-Implementierung, die ziemlich neu ist und sich anscheinend noch in der frühen Entwicklung befindet. Siehe die CUnit für Mr. Ando Homepage .

Diese Liste wurde zuletzt im März 2008 aktualisiert.

Weitere Frameworks:

CMocka

CMocka ist ein Testframework für C mit Unterstützung für Scheinobjekte. Es ist einfach zu bedienen und einzurichten.

Siehe die CMocka Homepage .

Kriterium

Criterion ist ein plattformübergreifendes C-Unit-Test-Framework, das die automatische Testregistrierung, parametrisierte Tests und Theorien unterstützt und das in verschiedenen Formaten wie TAP und JUnit XML ausgegeben werden kann. Jeder Test wird in einem eigenen Prozess ausgeführt, sodass Signale und Abstürze bei Bedarf gemeldet oder getestet werden können.

Weitere Informationen finden Sie auf der Criterion-Homepage .

HWUT

HWUT ist ein allgemeines Unit-Test-Tool mit hervorragender Unterstützung für C. Es kann helfen, Makefiles zu erstellen, massive Testfälle zu generieren, die in minimalen 'Iterationstabellen' codiert sind, entlang von Zustandsautomaten zu laufen, C-Stubs zu generieren und vieles mehr. Die allgemeine Herangehensweise ist ziemlich einzigartig: Urteile basieren auf 'guter Standard/schlechter Standard'. Die Vergleichsfunktion ist jedoch flexibel. Somit kann jede Art von Skript zur Überprüfung verwendet werden. Es kann auf jede Sprache angewendet werden, die eine Standardausgabe erzeugen kann.

Siehe die HWUT-Homepage .

CGreen

Ein modernes, portables, sprachübergreifendes Unit-Test- und Verspottungs-Framework für C und C++. Es bietet eine optionale BDD-Notation, eine Spottbibliothek und die Möglichkeit, sie in einem einzigen Prozess auszuführen (um das Debuggen zu vereinfachen). Es steht ein Testläufer zur Verfügung, der die Testfunktionen automatisch erkennt. Sie können jedoch programmgesteuert eigene erstellen.

All diese Funktionen (und mehr) werden in dem CGreen-Handbuch erklärt.

Wikipedia gibt eine detaillierte Liste der C-Unit-Testing-Frameworks unter Liste der Unit-Testing-Frameworks: C

472
Adam Rosenfield

Persönlich mag ich das Google Test Framework .

Die eigentliche Schwierigkeit beim Testen von C-Code besteht darin, die Abhängigkeiten von externen Modulen aufzuheben, damit Sie Code in Einheiten isolieren können. Dies kann besonders problematisch sein, wenn Sie versuchen, Tests für älteren Code durchzuführen. In diesem Fall verwende ich häufig den Linker, um Stichleitungsfunktionen in Tests zu verwenden.

Darauf beziehen sich die Leute, wenn sie über " Nähte " sprechen. In C besteht Ihre einzige Option darin, den Pre-Prozessor oder den Linker zu verwenden, um Ihre Abhängigkeiten zu verspotten.

Eine typische Testsuite in einem meiner C-Projekte könnte folgendermaßen aussehen:

#include "myimplementationfile.c"
#include <gtest/gtest.h>

// Mock out external dependency on mylogger.o
void Logger_log(...){}

TEST(FactorialTest, Zero) {
    EXPECT_EQ(1, Factorial(0));
}

Beachten Sie, dass Sie tatsächlich die C-Datei und nicht die Header-Datei einschließen . Dies bietet den Vorteil des Zugriffs auf alle statischen Datenelemente. Hier verspotte ich meinen Logger (der möglicherweise in logger.o enthalten ist und eine leere Implementierung enthält). Dies bedeutet, dass die Testdatei unabhängig vom Rest der Codebasis kompiliert und verlinkt und isoliert ausgeführt wird.

Für das Cross-Compilieren des Codes benötigen Sie gute Einrichtungen auf dem Ziel. Ich habe dies mit googletest cross gemacht, das auf einer PowerPC-Architektur für Linux kompiliert wurde. Dies ist sinnvoll, da Sie dort eine vollständige Shell und ein Betriebssystem haben, um Ihre Ergebnisse zu sammeln. Für weniger reiche Umgebungen (die ich als alles klassifiziere, was kein vollständiges Betriebssystem hat) sollten Sie nur auf dem Host erstellen und ausführen. Sie sollten dies trotzdem tun, damit Sie die Tests automatisch als Teil des Builds ausführen können.

Ich finde, dass das Testen von C++ - Code im Allgemeinen viel einfacher ist, da OO -Code im Allgemeinen viel weniger als prozedural gekoppelt ist (dies hängt natürlich stark vom Codierungsstil ab). In C++ können Sie auch Tricks wie das Einfügen von Abhängigkeiten und das Überschreiben von Methoden verwenden, um Nähte in Code zu integrieren, der ansonsten gekapselt ist.

Michael Feathers hat ein exzellentes Buch zum Testen von Legacy-Code . In einem Kapitel behandelt er Techniken für den Umgang mit Nicht-OO-Code, die ich sehr empfehlen kann.

Bearbeiten : Ich habe ein Blog-Beitrag über Unit-Testing-Prozedurcode geschrieben, mit Quelle auf GitHub verfügbar .

Edit : Es gibt ein neues Buch, das von den Pragmatic Programmers herauskommt , das sich speziell mit Unit-Testing-C-Code befasst, der Ich kann es nur empfehlen .

157
mikelong

Minunit ist ein unglaublich einfaches Unit-Testing-Framework. Ich benutze es, um c Mikrocontroller-Code für avr Unit-Test.

129
Matteo Caprari

Ich verwende derzeit das CuTest-Unit-Test-Framework:

http://cutest.sourceforge.net/

Es ist ideal für eingebettete Systeme, da es sehr leicht und einfach ist. Ich hatte keine Probleme damit, es sowohl auf der Zielplattform als auch auf dem Desktop zum Laufen zu bringen. Zusätzlich zum Schreiben der Komponententests ist Folgendes erforderlich:

  • eine Header-Datei, die überall dort enthalten ist, wo Sie die CuTest-Routinen aufrufen
  • eine einzelne zusätzliche 'C'-Datei, die zusammengestellt/mit dem Bild verknüpft werden soll
  • ein einfacher Code wurde zu main hinzugefügt, um die Komponententests einzurichten und aufzurufen. Ich habe dies nur in einer speziellen main () -Funktion, die kompiliert wird, wenn UNITTEST während des Builds definiert wird.

Das System muss einen Heap und einige Stdio-Funktionen unterstützen (über die nicht alle eingebetteten Systeme verfügen). Der Code ist jedoch so einfach, dass Sie möglicherweise Alternativen zu diesen Anforderungen verwenden können, wenn Ihre Plattform diese nicht bietet.

Mit einigen vernünftigen Verwendung von extern "C" {} -Blöcken unterstützt es auch das Testen von C++ ganz gut.

40
Michael Burr

Ich sage fast das gleiche wie Ratkok, aber wenn Sie eine eingebettete Wendung zu den Unit-Tests haben, dann ...

nity - Sehr empfehlenswertes Framework zum Testen von C-Code.

Die Beispiele in dem Buch, das in diesem Thread erwähnt wird TDD für eingebettetes C , werden mit Unity (und CppUTest) geschrieben.

36
Johan

Vielleicht möchten Sie sich auch libtap ansehen, ein C-Testframework, das das Test Anything Protocol (TAP) ausgibt und sich daher gut in eine Vielzahl von Tools für diese Technologie integrieren lässt. Es wird hauptsächlich in der dynamischen Sprachwelt verwendet, ist aber einfach zu bedienen und wird immer beliebter.

Ein Beispiel:

#include <tap.h>

int main () {
    plan(5);

    ok(3 == 3);
    is("fnord", "eek", "two different strings not that way?");
    ok(3 <= 8732, "%d <= %d", 3, 8732);
    like("fnord", "f(yes|no)r*[a-f]$");
    cmp_ok(3, ">=", 10);

    done_testing();
}
33
Ovid

Es gibt ein elegantes Unit-Test-Framework für C mit Unterstützung für Scheinobjekte namens cmocka . Es erfordert nur die Standard-C-Bibliothek, funktioniert auf einer Reihe von Computerplattformen (einschließlich Embedded) und mit verschiedenen Compilern.

Es werden auch verschiedene Nachrichtenausgabeformate wie Subunit, Test Anything Protocol und jUnit XML-Berichte unterstützt.

cmocka wurde erstellt, um auch auf eingebetteten Plattformen zu funktionieren, und wird von Windows unterstützt.

Ein einfacher Test sieht so aus:

#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>

/* A test case that does nothing and succeeds. */
static void null_test_success(void **state) {
    (void) state; /* unused */
}

int main(void) {
    const struct CMUnitTest tests[] = {
        cmocka_unit_test(null_test_success),
    };
    return cmocka_run_group_tests(tests, NULL, NULL);
}

Das API ist vollständig dokumentiert und einige Beispiele sind Teil des Quellcodes.

Um mit cmocka zu beginnen, sollten Sie den Artikel auf LWN.net lesen: nit-Test mit Scheinobjekten in C

cmocka 1.0 wurde im Februar 2015 veröffentlicht.

26
asn

Ich bin nicht weit gekommen, um eine ältere C-Anwendung zu testen, bevor ich nach einer Möglichkeit gesucht habe, Funktionen zu verspotten. Ich brauchte dringend Mocks, um die C-Datei, die ich testen möchte, von anderen zu isolieren. Ich habe cmock ausprobiert und denke, ich werde es übernehmen.

Cmock scannt Header-Dateien und generiert Mock-Funktionen basierend auf den gefundenen Prototypen. Mit Mocks können Sie eine C-Datei in perfekter Isolation testen. Alles, was Sie tun müssen, ist, Ihre Testdatei mit Mocks anstelle Ihrer echten Objektdateien zu verknüpfen.

Ein weiterer Vorteil von cmock ist, dass es Parameter validiert, die an verspottete Funktionen übergeben wurden, und Sie angeben können, welchen Rückgabewert die Verspottung liefern soll. Dies ist sehr nützlich, um verschiedene Ausführungsabläufe in Ihren Funktionen zu testen.

Tests bestehen aus den typischen Funktionen testA (), testB (), in denen Sie Erwartungen aufbauen, Funktionen aufrufen, um Asserts zu testen und zu überprüfen.

Der letzte Schritt besteht darin, einen Läufer für Ihre Tests mit Einheit zu generieren. Cmock ist an das Unity-Test-Framework gebunden. Unity ist so einfach zu erlernen wie jedes andere Unit-Test-Framework.

Es ist einen Versuch wert und leicht zu verstehen:

http://sourceforge.net/apps/trac/cmock/wiki

Update 1

Ein anderes Framework, das ich untersuche, ist Cmockery.

http://code.google.com/p/cmockery/

Es ist ein reines C-Framework, das das Testen und Verspotten von Einheiten unterstützt. Es besteht keine Abhängigkeit von Ruby (im Gegensatz zu Cmock) und es besteht nur eine sehr geringe Abhängigkeit von externen Bibliotheken.

Das Einrichten von Mocks erfordert etwas mehr manuelle Arbeit, da keine Code-Generierung erfolgt. Das ist für ein bestehendes Projekt nicht viel Arbeit, da sich an Prototypen nicht viel ändert: Sobald Sie Ihre Verspottungen haben, müssen Sie sie für eine Weile nicht mehr ändern (das ist mein Fall). Zusätzliche Eingabe bietet vollständige Kontrolle über Mocks. Wenn es etwas gibt, das Sie nicht mögen, ändern Sie einfach Ihren Schein.

Es wird kein spezieller Testläufer benötigt. Sie müssen lediglich ein Array von Tests erstellen und es an eine run_tests-Funktion übergeben. Ein bisschen mehr manuelle Arbeit auch hier, aber ich mag definitiv die Idee eines in sich geschlossenen autonomen Frameworks.

Außerdem enthält es ein paar nette C-Tricks, die ich nicht kannte.

Insgesamt braucht Cmockery ein bisschen mehr Verständnis für Mocks, um loszulegen. Beispiele sollen Ihnen dabei helfen, dies zu überwinden. Es sieht so aus, als ob es die Arbeit mit einfacheren Mechanik erledigen kann.

20
Philippe A.

Als C-Neuling fand ich die Folien mit dem Namen Testgetriebene Entwicklung in C sehr hilfreich. Grundsätzlich wird der Standard assert() zusammen mit && verwendet, um eine Nachricht ohne externe Abhängigkeiten zu übermitteln. Wenn jemand an ein Full-Stack-Testframework gewöhnt ist, reicht dies wahrscheinlich nicht aus :)

16
chelmertz

Wir haben CHEAT (gehostet auf GitHub ) geschrieben, um die Benutzerfreundlichkeit und Portabilität zu verbessern.

Es hat keine Abhängigkeiten und erfordert keine Installation oder Konfiguration. Es wird nur eine Header-Datei und ein Testfall benötigt.

#include <cheat.h>

CHEAT_TEST(mathematics_still_work,
    cheat_assert(2 + 2 == 4);
    cheat_assert_not(2 + 2 == 5);
)

Tests werden in eine ausführbare Datei kompiliert, in der die Tests ausgeführt und ihre Ergebnisse gemeldet werden.

$ gcc -I . tests.c
$ ./a.out
..
---
2 successful of 2 run
SUCCESS

Es hat auch schöne Farben.

14
Tuplanolla

Ich benutze kein Framework, ich benutze nur Autotools, um die Zielunterstützung zu "überprüfen". Implementiere ein "main" und verwende assert (s).

Mein Test dir Makefile.am (s) sieht so aus:

check_PROGRAMS = test_oe_amqp

test_oe_amqp_SOURCES = test_oe_amqp.c
test_oe_amqp_LDADD = -L$(top_builddir)/components/common -loecommon
test_oe_amqp_CFLAGS = -I$(top_srcdir)/components/common -static

TESTS = test_oe_amqp
12
navicore

Es gibt CUnit

Und Embedded Unit ist ein Unit-Test-Framework für Embedded C-Systeme. Das Design wurde von JUnit und CUnit und mehr kopiert und dann für das Embedded C-System angepasst. Embedded Unit benötigt keine Standard-C-Bibliotheken. Alle Objekte sind dem Bereich const zugeordnet.

Und Tessy automatisiert den Unit-Test von Embedded-Software.

12
prakash

In Michael Feathers Buch "Effektiv mit Legacy-Code arbeiten" werden viele Techniken vorgestellt, die für Unit-Tests während der C-Entwicklung spezifisch sind.

Es gibt Techniken im Zusammenhang mit der Abhängigkeitsinjektion, die spezifisch für C sind und die ich sonst nirgends gesehen habe.

11

CppUTest - Sehr empfehlenswertes Framework zum Testen von C-Code.

Die Beispiele in dem Buch, das in diesem Thread erwähnt wird TDD für eingebettetes C , werden mit CppUTest geschrieben.

7
ratkok

anders als meine offensichtliche Voreingenommenheit

http://code.google.com/p/seatest/

ist eine nette einfache Möglichkeit zum Unit-Test von C-Code. ahmt xUnit nach

6
Keith Nicholas

Ich benutze CxxTest für eine eingebettete C/C++ - Umgebung (hauptsächlich C++).

Ich bevorzuge CxxTest, da es ein Perl/Python-Skript zum Erstellen des Test-Runners enthält. Nach einem kleinen Gefälle, um es einzurichten (noch kleiner, da Sie den Testläufer nicht schreiben müssen), ist es ziemlich einfach zu verwenden (einschließlich Beispielen und nützlicher Dokumentation). Die meiste Arbeit war das Einrichten der "Hardware", auf die der Code zugreift, damit ich die Einheit/das Modul effektiv testen kann. Danach ist es einfach, neue Komponententestfälle hinzuzufügen.

Wie bereits erwähnt, handelt es sich um ein C/C++ - Unit-Test-Framework. Sie benötigen also einen C++ - Compiler.

CxxTest User GuideCxxTest Wiki

6
Zing-

Nachdem ich Minunit gelesen hatte, dachte ich, ein besserer Weg wäre es, den Test auf ein Assert-Makro zu stützen, das ich sehr ähnlich wie eine defensive Programmtechnik verwende. Also habe ich die gleiche Idee von Minunit mit Standard-Assert gemischt. Sie können mein Framework (ein guter Name könnte NoMinunit sein) in k0gas Blog sehen

Google verfügt über ein hervorragendes Test-Framework. https://github.com/google/googletest/blob/master/googletest/docs/primer.md

Und ja, soweit ich sehe, wird es mit normalem C funktionieren, d. H. Es werden keine C++ - Funktionen benötigt (möglicherweise ist ein C++ - Compiler erforderlich, nicht sicher).

4
Paweł Hajdan
4
Landon Kuhn

Cmockery ist ein kürzlich gestartetes Projekt, das aus einer sehr einfach zu verwendenden C-Bibliothek zum Schreiben von Komponententests besteht.

4

Schauen Sie zuerst hier nach: http://en.wikipedia.org/wiki/List_of_unit_testing_frameworks#C

Meine Firma hat eine C-Bibliothek, die unsere Kunden nutzen. Wir verwenden CxxTest (eine C++ - Komponententestbibliothek), um den Code zu testen. CppUnit wird auch funktionieren. Wenn Sie in C stecken bleiben, würde ich RCUNIT empfehlen (aber CUnit ist auch gut).

3
Kevin
2
Tony Bai

API Sanity Checker - Testframework für C/C++ - Bibliotheken:

Ein automatischer Generator für grundlegende Komponententests für eine gemeinsam genutzte C/C++ - Bibliothek. Es ist in der Lage, sinnvolle (in den meisten, aber leider nicht allen Fällen) Eingabedaten für Parameter zu generieren und einfache ("vernünftige" oder "flache") Testfälle für jede Funktion in der API durch die Analyse von Deklarationen im Header zu erstellen Dateien.

Die Qualität der generierten Tests ermöglicht es, in einfachen Anwendungsfällen das Fehlen kritischer Fehler zu überprüfen. Das Tool ist in der Lage, generierte Tests zu erstellen und auszuführen sowie Abstürze (Segfaults), Abbrüche, alle Arten von ausgesendeten Signalen, Nicht-Null-Programmrückgabecode und Programmabstürze zu erkennen.

Beispiele:

2
linuxbuild

Ich habe RCUNIT verwendet, um einige Komponententests für eingebetteten Code auf dem PC durchzuführen, bevor ich auf dem Ziel getestet habe. Eine gute Abstraktion der Hardwareschnittstelle ist wichtig, da Sie sonst durch Endianität und Speicherzuordnung der Register umgebracht werden.

2
Gerhard

Wenn Sie mit JUnit vertraut sind, empfehle ich CppUnit. http://cppunit.sourceforge.net/cppunit-wiki

Dies setzt voraus, dass Sie über einen C++ - Compiler verfügen, der die Komponententests durchführt. Wenn nicht, dann muss ich Adam Rosenfield zustimmen, dass die Prüfung das ist, was Sie wollen.

2
Kwondri

LibU ( http://koanlogic.com/lib ) verfügt über ein Unit-Test-Modul, das explizite Abhängigkeiten zwischen Testsuite und -fall, Testisolation, parallele Ausführung und einen anpassbaren Berichtformatierer ermöglicht (Standardformate sind xml und txt) ).

Die Bibliothek ist BSD-lizenziert und enthält viele andere nützliche Module - Netzwerk, Debugging, häufig verwendete Datenstrukturen, Konfiguration usw. - falls Sie sie in Ihren Projekten benötigen ...

1
bongo

Ich bin überrascht, dass niemand etwas erwähnt hat Cutter (http://cutter.sourceforge.net/) Sie können C und C++ testen, es lässt sich nahtlos in Autotools integrieren und verfügt über ein wirklich nettes Tutorial.

1
Kris

Eine zu verwendende Technik besteht darin, den Komponententestcode mit einem C++ xUnit-Framework (und einem C++ - Compiler) zu entwickeln und dabei die Quelle für das Zielsystem als C-Module zu verwalten.

Stellen Sie sicher, dass Sie Ihre C-Quelle regelmäßig unter Ihrem Cross-Compiler kompilieren, wenn möglich automatisch mit Ihren Komponententests.

1
quamrana

Wenn Sie immer noch auf der Suche nach Test-Frameworks sind, ist CUnitWin32 eines für die Win32/NT-Plattform.

Dies löst ein grundlegendes Problem, mit dem ich bei anderen Test-Frameworks konfrontiert war. Globale/statische Variablen befinden sich nämlich in einem deterministischen Zustand, da jeder Test als separater Prozess ausgeführt wird.

0
Dushara

Wenn Sie auf Win32-Plattformen oder den NT-Kernel-Modus abzielen, sollten Sie sich cfix ansehen.

0

Ich schrieb gerade Libcut aus Frustration mit bestehenden C-Unit-Testbibliotheken. Es verfügt über eine automatische Typfolge von Primitiven (keine Notwendigkeit für test_eq_int, test_eq_long, test_eq_short usw.; nur zwei verschiedene Mengen für Primitive und Strings) und besteht aus einer Header-Datei. Hier ist ein kurzes Beispiel:

#include <libcut.h>

LIBCUT_TEST(test_abc) {
    LIBCUT_TEST_EQ(1, 1);
    LIBCUT_TEST_NE(1, 0);
    LIBCUT_TEST_STREQ("abc", "abc");
    LIBCUT_TEST_STRNE("abc", "def");
}

LIBCUT_MAIN(test_abc);

Es funktioniert jedoch nur mit C11.

0
kirbyfan64sos