Testen auf dem C-Track

Lerne, wie du deine C-Übungen auf Exercism testest


Jede Übung liefert die Unit-Tests und ein Make-Build-Rezept. Die Implementierung schreibst du selbst.

Jede Testdatei soll gegen deine Implementierung gelinkt werden, um eine ausführbare Konsolenanwendung zu erzeugen, die die Tests ausführt. Wenn du die Testanwendung ausführst, werden für jeden fehlgeschlagenen Test Meldungen ausgegeben, und wenn Tests fehlschlagen, wird ein Exit-Status ungleich null gemeldet.

So arbeitest du eine Übung durch:

  • Erzeuge den ersten Build mit Make.
  • Für jeden Unit-Test:
    • Entferne die Zeile TEST_IGNORE().
    • Behebe alle Kompilierfehler, damit der Test fehlschlägt.
    • Implementiere gerade so viel, dass der Test besteht.
    • Refaktoriere deine Implementierung, um die Lesbarkeit zu verbessern, Duplikate zu reduzieren usw.

Tests kompilieren und ausführen

Jede Übung bringt eine makefile-Datei zusammen mit einer .c-Datei mit den Unit-Tests mit. Du solltest die Make-Datei nicht bearbeiten müssen. Die mitgelieferte Make-Datei geht davon aus, dass deine Implementierung als Header-Datei (.h) und als Quelldatei (.c) vorliegt, die nach der Übung benannt sind.

Zum Beispiel erwartet die Übung bob eine Implementierung in bob.h und bob.c. Bei Übungen mit Bindestrichen im Namen wird angenommen, dass die Quelldateien Unterstriche verwenden, word-count erwartet also word_count.h und word_count.c. Vielleicht ist deine Implementierung so einfach, dass sie vollständig in der Header-Datei stehen kann; dann kannst du die .c-Datei weglassen.

Erzeuge deine ersten Implementierungsdateien, bevor du Make ausführst. Wenn du beim Ausführen von Make für die Übung bob die Dateien bob.h und bob.c nicht hast, gibt Make einen Fehler aus, dass Dateien nicht gefunden wurden. Diese Dateien dürfen leer sein, aber sie müssen existieren.

Kompiliere deinen Code

Am einfachsten kompilierst du deinen Code, indem du make an der Kommandozeile aufrufst. Unter Linux steht die Kommandozeile in bash oder ähnlichen Shells zur Verfügung, unter MacOS verwendest du das Terminal. Unter Windows 10 steht die Bash des Windows Subsystem for Linux (WSL) zur Verfügung.

Um das zu tun, nehmen wir an, dass das aktuelle Verzeichnis der Übungsordner ist:

$ make

Damit wird dein Code kompiliert und die Tests werden ausgeführt.

Die makefile enthält außerdem einen Build, der einige häufige Fehler im Zusammenhang mit Speicherlecks und Zugriffen außerhalb der Grenzen von Arrays prüft. Um diese Prüfungen auszuführen, verwende Folgendes an der Kommandozeile:

$ make memcheck

Aufräumen

Um nach einem Build aufzuräumen, kannst du make anweisen, die gesamte Build-Ausgabe einschließlich der ausführbaren Datei zu löschen:

$ make clean

Alternative unter MacOS

Unter MacOS kannst du auch Xcode verwenden. Um den Code zu kompilieren, wähle Build in der Symbolleiste.