Lerne, wie du deine Ruby-Übungen auf Exercism testest
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.
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.
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.
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.
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.
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.