2012-05-19 8 views
5

Gibt es eine Möglichkeit, eine Testdatei aus einer IRB oder PRY-Sitzung auszuführen?Ausführen eines Unit-Tests von irb oder pry

Ich versuchte load './testfile.rb, aber das führt nicht die Tests in der Testdatei.

Meine Testdatei sieht wie folgt aus:

require 'test/unit' 
require './sudoku.rb' 

class SudokuTest < Test::Unit::TestCase 
    def test_initialize 
    assert_nothing_raised do 
     Sudoku.new(Array.new(9*9)) 
    end 
    assert_nothing_raised do 
     Sudoku.new(Array.new(9*9,Field.new(nil))) 
    end 
    end 
end 

Antwort

4

Tests sind nicht wirklich interaktiv wie das bedeutete, zu laufen, aber wenn man in der Ruby-Standard-Bibliothek suchen und sehen Sie die Datei test/unit.rb Sie werden sehen, dass es eine at_exit-Handler-Sets wenn Sie require 'test/unit':

at_exit do 
    unless $! || Test::Unit.run? 
    Kernel.exit Test::Unit::AutoRunner.run 
    end 
end 

Also an dieser alle suchen Sie in Ihrer irb Sitzung tun müssen, ist Aufruf:

Test::Unit::AutoRunner.run 

Dadurch werden alle von Ihnen geladenen Tests ausgeführt, die von Test::Unit::TestCase unterklassifiziert sind.

Wenn Sie nur die Testdatei ausführen möchten, ohne es in die irb Sitzung zu laden, können Sie einfach tun:

system 'ruby testfile.rb' 
0

Es ist nicht die Tests nicht ausgeführt werden, weil Sie es nicht zu fragen sind. Sie sind nur erstellen der Klasse.

Versuchen Sie folgendes:

tests = SudokuTest.new 
tests.test_initialize 
+0

Wenn ich das versuche, bekomme ich: 'ArgumentError: falsche Anzahl von Argumenten (0 für 1)' beim Aufruf von SudokuTest.new und ich kann nicht herausfinden, was es eigentlich als Argument will. – FlyingFoX

+0

Das Argument sollte die Methode sein, die getestet werden sollte: http://test-unit.rubyforge.org/test-unit/Test/Unit/TestCase.html#method-c-new. Versuchen Sie einfach 'SudokuTest.new: test_initialize'. –

+0

Die Verwendung von 'SudokuTest.new: test_initialize' erstellt ein SudokuTest-Objekt, aber der Aufruf von' test_initialize' gibt mir 'NoMethodError: undefinierte Methode 'add_assertion' für nil: NilClass' – FlyingFoX

0

Vielleicht plymouth ist das, was Sie wollen. Es kann eine Pry-Sitzung automatisch im Rahmen eines fehlgeschlagenen Tests starten.