Testen im Ruby-Track

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


Tests ausführen

Führe die Tests so aus:

$ ruby hamming_test.rb

Nur der erste Test wird ausgeführt. Alle anderen wurden mit der skip-Methode als ausstehend markiert. Lösche oder kommentiere das nächste skip aus, sobald ein Test erfolgreich ist.

Skips verstehen

Die skip-Methode weist die Test-Suite an, einen Test nicht auszuführen. Das wird häufig verwendet, um Tests für noch nicht implementierte Funktionalität zu überspringen, damit du dich auf den Teil konzentrieren kannst, an dem du gerade arbeitest.

Die Zusammenfassung des Testlaufs listet die Anzahl der übersprungenen Tests auf. Du solltest alle Skips deaktivieren, bevor du eine Übung abschließt.

Testausgabe anpassen

Wenn du Farbausgabe möchtest, führe die Tests so aus:

$ ruby hamming_test.rb -p

Wenn du die Testnamen sehen möchtest, führe die Tests so aus:

$ ruby hamming_tests.rb -v

Wenn du nur einen Test ausführen möchtest, kannst du einen einzelnen Test oder eine Gruppe mit einem Muster im Stil regulärer Ausdrücke angeben.

$ ruby hamming_tests.rb -n /empty/

Du kannst die Optionen auch kombinieren.

Alle Skips deaktivieren

Jetzt, wo du einzelne Tests oder Gruppen von Tests auswählen kannst, die du ausführen möchtest, möchtest du vielleicht alle Skips deaktivieren.

Schnell und schmutzig

Wenn du die Tatsache ausnutzt, dass Methoden in Ruby überschreibbar sind, und diese Codezeile hinzufügst:

def skip ; end

so wie hier in der Hamming-Testdatei:

class HammingTest < Minitest::Test
  def skip ; end
  def test_identical_strands

dann werden alle Skips zwar weiterhin ausgewertet, aber deine Tests können trotzdem laufen.

Immer noch schnell, aber sauberer

Natürlich kann es nervig sein, mit der Zeit alle Dateien zu bearbeiten. Deshalb kannst du es so machen wie wir bei der Entwicklung der Übungen: Erstelle eine Datei, die die skip-Definition enthält, und binde sie als Bibliothek ein, wenn du sie brauchst.

Wir haben einen lib-Ordner angelegt, in dem unsere „Helfer“ liegen, und er sieht so aus:

require 'minitest/autorun'
# You can use this to disable all skips in the current exercise by issuing the
# following command:
#     ruby -I../lib -rdisable_skip <filename_test.rb>

module Minitest
  class Test
    def skip(_msg='', _bt=caller)
    end
  end
end

Die Beschreibung zur Verwendung steht als Kommentar in dieser Dateiauflistung, und die Dateiauflistung ist vollständig.