Pojedynczy plik unit testów możemy odpalić przy pomocy:
rake test TEST=your/path/to/test.rb
np:
rake test TEST=test/unit/user_test.rb
Pojedynczy plik unit testów możemy odpalić przy pomocy:
rake test TEST=your/path/to/test.rb
np:
rake test TEST=test/unit/user_test.rb
A nie prościej?:
ruby test/unit/user_test.rb
Również:
ruby test/unit/my_class_test.rb
Dodatkowo jeśli podamy
ruby test/unit/my_class_test.rb -n test_my_test_method
Uruchomimy pojedyńczą metodę testu z klasy MyClassTest
ruby test/unit/my_class_test.rb -n /my_method/
Uruchomimy wszystkie metody testowe w klasie MyClassTest, których nazwy odpowiadają wyrażeniu regularnego /my_method/
[quote=tjeden]A nie prościej?:
ruby test/unit/user_test.rb
[/quote]
Powyższa metoda nie załaduje Ci całego środowiska testowego (mówimy o testowaniu alikacji railsowych).
Na górze każdego automatycznie wygenerowanego pliku testu w Rails znajdziesz linijkę:
require File.dirname(__FILE__) + '/../test_helper'
która dokładnie to gwarantuje.
[quote=morgoth][quote=tjeden]A nie prościej?:
ruby test/unit/user_test.rb
[/quote]
Powyższa metoda nie załaduje Ci całego środowiska testowego (mówimy o testowaniu alikacji railsowych).[/quote]
Witam, tzn że:
[code=ruby]fixtures :posts
test “test create comment” do
comment = Comment.new(
:title => “Mój komentarz do tego postu”
:description => “Jest krytyczny”
:post_id => Post.find(:first).id
)
assert comment.save
end[/code]
i wywołanie:
ruby test/unit/comment_test.rb
nie zadziała? Ciekawe.
[quote=Bragi]Na górze każdego automatycznie wygenerowanego pliku testu w Rails znajdziesz linijkę:
require File.dirname(__FILE__) + '/../test_helper'
która dokładnie to gwarantuje.[/quote]
może rails wygenerować require ‘test_helper’, który trzeba zmienić na require ‘test\test_helper’, lub tak jak piszesz.
pozdrawiam
rezultat:
[code]kuba@ibm:~/myapp$ ruby test/unit/user_test.rb
Loaded suite test/unit/user_test
Started
E
Finished in 0.137649409 seconds.
[code]kuba@ibm:~/myapp$ rake test:units TEST=test/unit/user_test.rb
(in /home/kuba/myapp)
/usr/local/bin/ruby -I"lib:test" “/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb” “test/unit/user_test.rb”
Loaded suite /usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
.
Finished in 0.242482916 seconds.
1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications[/code]
… daje nam upragnioną zieloną kropeczkę ;-). Podsumowując: jeśli ktoś lubi się bawić w migrowanie bazy w środowisku testowym, zamienianie ścieżek w require, to zrezygnowanie z Rake daje mu 100% satysfakcji.
Odpalenie migracji w środowisku testowym (albo rake db:test:clone), faktycznie dramat i pogorzelisko.
Rozumiem, że nie masz za wiele testów i niezbyt często zmieniasz schemat bazy. Załadowanie środowiska testowego w dużym projekcie trwa niezłą chwilkę, nie lubię gdy po odpaleniu testów okazuje się, że połowa z nich wypluwa błędy tylko i wyłącznie dlatego, że np. w międzyczasie jakaś kolumna zmieniła nazwę. Zmienianie ścieżek w require w każdym pliku także nie należy do moich ulubionych czynności.
Niebardzo rozumiem sens tej dyskusji - zaproponowane rozwiązanie jest standardowym sposobem odpalania pojedynczych testów w RoR. Rozwiązanie jest bardzo przydatne w momencie gdy jesteśmy zmuszeni odpalić pojedyncze testy w samych Railsach (np. w actionpack). Nie widzę powodu, dla którego miałbym przerabiać ścieżki we wszystkich plikach testowych wspomnianego actionpacka.
Z odpaleniem ruby ścieżka_do_testu działa bez żadnego podmieniania ścieżek
Obie metody moim zdaniem są OK. ruby ścieżka łatwiej i szybciej wklepać, rake daje z automatu kompletne środowisko. Nie widzę za bardzo sensu w kłóceniu się na ten temat.