Testen auf dem Objective-C-Track

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


Exercism lädt nur eine Testdatei herunter. Die Header-Datei und die Quelldatei, die zur Übung gehören, musst du selbst anlegen. Du musst ein Xcode-Projekt mit der Testdatei, der Header-Datei (.h) und der Quelldatei (.m) erzeugen. Alternativ kannst du ein Test-Runner-Programm verwenden, das unten beschrieben wird.

Das Projekt in Xcode erstellen

  • Starte Xcode und erstelle ein neues Projekt.
  • Wähle OS X > Application und dann Command Line Tool.
  • Klicke auf Next und gib ihm einen Projektnamen. Am besten verwendest du ExerciseName.
  • Klicke auf Next und speichere das Projekt im Übungsverzeichnis von Exercism.
  • Jetzt, da das Projekt erstellt ist, klicke auf Editor > Add Target.
  • Wähle OS X > Test und dann OS X Unit Testing Bundle.
  • Gib dem Target den Namen ExerciseName Tests.
  • Öffne im linken Bereich (dem sogenannten Navigator) den Project navigator, klappe den Ordner ExerciseName Tests auf und öffne die Datei ExerciseName_Tests.m.
  • Ersetze seinen Inhalt durch die Testdatei, die du von Exercism bekommen hast.
  • Ersetze in dieser Datei alle Vorkommen von „test_suite“ durch „ExerciseName_Tests“.
  • Wechsle im rechten Bereich zur File Template library (oder benutze CTRL+OPTION+CMD+1) und ziehe die Vorlage Cocoa Class in den Ordner ExerciseName_Tests im Project navigator.
  • Gib ihr den Namen ExerciseName und wähle ExerciseName Tests als Target aus.
  • Du hast jetzt zwei neue Dateien in deinem Verzeichnis ExerciseName_Tests: ExerciseName.h und ExerciseName.m.
  • Klicke im Project navigator auf dein Projekt.
  • Klicke in der Liste der Targets auf ExerciseName Tests.
  • Wähle Build Phases in der Navigation des Editors.
  • Vergewissere dich, dass beide .m-Dateien in der Liste Compile Sources stehen.
  • Wechsle mit CMD+5 zum Test navigator.
  • Klicke mit der rechten Maustaste auf das Bundle ExerciseName Tests und dann auf Enable ExerciseName_Tests.
  • Führe die Tests aus, indem du auf das nach rechts zeigende Dreieck klickst, das beim Überfahren des Bundles im Test navigator erscheint, oder benutze CMD+U.

Die Tests werden über Xcode ausgeführt.

Hinweis: Wenn du die Fehlermeldung „No visible @interface for ExerciseName declares the selector ExerciseSelector,“ bekommst, hast du die Schritte korrekt befolgt, aber noch nichts in deine Header- und/oder Implementierungsdatei geschrieben. Nachdem du deine Methode in der .h-Datei deklariert und in der .m-Datei definiert hast, sollten deine Tests hilfreichere Fehler melden, die dich beim Lösen der Übung voranbringen. Lies diese Einführung in Objective-C-Klassen für ausführlichere Informationen.

Ein Test-Runner

Eine Alternative zum manuellen Erzeugen der Projektdatei ist ein in Ruby geschriebenes Test-Runner-Programm, objc, das für dich eine Projektdatei mit der Testdatei, der Header-Datei und der Quelldatei anlegt.

$ gem install objc

Führe die Tests so aus:

$ objc -x ExerciseName

(Beachte das Flag -x/--xcodebuild, das festlegt, dass xcodebuild statt xctool verwendet wird. Letzteres funktioniert nicht mit den neuesten Xcode-Versionen.)

Das Programm objc verwendet den Übungsnamen, um die Testdatei ExerciseNameTest.m, die Header-Datei ExerciseName.h und die Quelldatei ExerciseName.m zu finden. Die Dateien werden in ein temporäres Xcode-Projekt eingefügt und dann wird xcodebuild verwendet, um die Tests für das Projekt auszuführen.

objc sorgt zwar dafür, dass du Xcode nie starten musst, um diese Übungen zu lösen, aber die Fehlermeldungen und das Feedback auf der Kommandozeile sind nicht so klar wie über die Benutzeroberfläche von Xcode.