Pierwszy post na forum, więc Wszystkich pozdrawiam.
Mam pewien problem i za bardzo nie wiem jak sobie z nim poradzić. Chodzi o coś takiego,
załóżmy, że mam trzy klasy testowe:
class TestPierwszy < Test::Unit::TestCase
def test_1
assert_equal(0,0)
end
end
class TestDrugi < Test::Unit::TestCase
assert_equal(0,1)
end
class TestTrzeci < Test::Unit::TestCase
assert_equal(0,0)
end
suite = Test::Unit::TestSuite.new
suite << TestPierwszy.suite
suite << TestDrugi.suite
suite << TestTrzeci.suite
Test::Unit::UI::Console::TestRunner.run(suite)
W takim przykładzie ruby wykona wszystkie testy i poda wynik, które assercje się wykonały poprawnie a które nie. Natomiast mój problem jest taki, że nie wiem jak zrobić aby kontrolować wyniki danej klasy testowej. Chciałbym zakończyć test jeśli np. TestPierwszy.suite nie wykona się poprawnie. Macie może jakieś pomysły ??
Każdy z pakietów do unit testu z jakim się spotkałem zawsze przechodził pełen suite. Możesz to obejść w prosty (choć niezbyt elegancki sposób) - jeśli asercja się nie powiedzie zrób po prostu exit().
Proponuję Ci jednak zainteresować się autotest z gemu ZenTest. Autotest działa cały czas w tle. Po uruchomieniu przechodzi wszystkie testy. Jeśli któryś z testów się nie powiódł wyświetla wyniki i czeka aż poprawisz plik klasy lub testu. Gdy to zrobisz uruchamia jeszcze raz ale tylko test, który nie przeszedł. Robi to tak długo aż test przejdzie. Znacznie to oszczędza czas, zwłaszcza w wypadku dużych projektów Railsowych.
Dzięki za podpowiedź, raczej jednak skłonny jestem użyć exit() ponieważ zależy mi na tym, żeby żadne testy po pojawieniu się błędu nie wykonywały się. Jeśli chodzi ZenTest to na pewno zapamiętam, że jest coś takiego.
Po pewnym zastanowieniu stwierdzam, że nie do końca rozumiem z tym exit(). Przecież nie mam możliwości określenia czy dana assercja wykonała się poprawnie czy nie, bo metody assert chyba nie zwracają żadnych wartości, chyba że coś mi się pomyliło. Co o tym sądzicie ??