我在我們的rails應用程序中有一個測試掛起找不到哪一個(因爲它掛起,並沒有得到失敗報告)。我發現這個博客文章http://bmorearty.wordpress.com/2008/06/18/find-tests-more-easily-in-your-testlog/,它添加了一個設置鉤子來打印測試名稱,但是當我嘗試做同樣的事情時,它給了我一個錯誤,指出設置參數的錯誤數量(1代表0)。任何幫助都將不勝感激。Rails測試懸掛 - 如何在執行前打印測試名稱?
回答
如果您在使用耙運行測試,將工作:
rake test:units TESTOPTS="-v"
你使用什麼測試框架?測試/股?
我會看看RSpec,它會爲您的測試提供更多的上下文。您還可以得到一個不錯的HTML報告,看起來像這樣:
RSpec Result http://myskitch.com/robbyrussell/rspec_results-20070801-233809.jpg
假如你有任何失敗的測試,具體的測試將是紅色的,它會擴展到特定的線路,其中測試未能提供您更多關於測試失敗的原因以及您應該考慮解決問題的位置。
博客文章中的定義應該是特定的(設置(&塊)方法在context.rb中的Thoughtbot :: Shoulda模塊中定義,然後應該由TestCase擴展該模塊)。
純測試::單位的定義是
# File test/unit/testcase.rb, line 100
def setup
end
你可以做的是
def setup
log_test
end
private
def log_test
if Rails::logger
# When I run tests in rake or autotest I see the same log message multiple times per test for some reason.
# This guard prevents that.
unless @already_logged_this_test
Rails::logger.info "\n\nStarting #{@method_name}\n#{'-' * (9 + @method_name.length)}\n"
end
@already_logged_this_test = true
end
編輯
,如果你真的不想編輯您的文件可能會導致重新打開測試用例並延長運行時間:
class Test::Unit::TestCase
alias :old_run :run
def run
log_test
old_run
end
end
這應該工作(我沒有紅寶石各地雖然測試)
我放棄了! (沮喪)
我檢查了代碼和軌道實際上背後的場景魔術可能是爲什麼重新定義運行不起作用。
事情是:魔術的一部分包括ActiveSupport :: CallBack和創建回調安裝和拆卸。
這意味着
class Test::Unit::TestCase
setup :log_test
private
def log_test
if Rails::logger
# When I run tests in rake or autotest I see the same log message multiple times per test for some reason.
# This guard prevents that.
unless @already_logged_this_test
Rails::logger.info "\n\nStarting #{@method_name}\n#{'-' * (9 + @method_name.length)}\n"
end
@already_logged_this_test = true
end
end
end
一定要努力
,實際上它運行測試確實工作。我感到困惑的是,這是我嘗試的第一件事,並且因爲出現同樣的錯誤而失敗
努力的一枚硬幣。 – nurettin 2012-02-15 14:55:07
測試名稱的打印由TestRunner負責。如果您從命令行運行測試,則可以指定-v選項以打印出測試用例名稱。
例如:
ruby test_Foo.rb -v
Loaded suite test_Foo
Started
test_blah(TestFoo): .
test_blee(TestFoo): .
Finished in 0.007 seconds.
2 tests, 15 assertions, 0 failures, 0 errors
從Rails的`rake tests`任務有沒有同樣的方法來做到這一點? – nertzy 2008-10-06 19:01:20
這是我所用,在test_helper.rb中
class Test::Unit::TestCase
# ...
def setup_with_naming
unless @@named[self.class.name]
puts "\n#{self.class.name} "
@@named[self.class.name] = true
end
setup_without_naming
end
alias_method_chain :setup, :naming unless defined? @@aliased
@@aliased = true
end
的@@別名變量保持其再次走樣當你在多個文件上運行一旦; @@ named在每次測試之前保持顯示名稱(在第一次運行之前)。
感謝大家的幫助,我最終要通過測試並增加了呼叫在每個設置方法爲這些過去的幾個答案之前,每個測試文件log_name上來。再次感謝。
- 1. 獲取當前正在執行的測試測試的名稱?
- 2. 在Leiningen打印測試名稱
- 3. 如何調試rake spec不執行測試;無限懸掛問題(rails 3)
- 4. 如何在執行之前確定單元測試的名稱?
- 5. 如何在Mocha測試中檢索當前測試的名稱?
- 6. 如何顯示當前執行的測試方法的名稱
- 7. ScalaTest:在運行測試時打印標籤名稱
- 8. MSTest在執行Web測試時掛起
- 9. 如何在執行另一個測試後執行測試?
- 10. Mbunit - Gallio。獲取當前正在執行的測試的名稱
- 11. maven surefire:如何打印當前正在運行的測試?
- 12. Rails 3測試:如何在測試時打開瀏覽器?
- 13. Selenium IDE:在測試中執行測試
- 14. 如何從單元測試中的測試套件獲取當前運行的測試用例名稱
- 15. 測試名稱與測試AssemblyCleanup
- 16. 在JUnit中執行任何類的第一次測試之前掛鉤執行
- 17. Symfony2功能測試打印出重定向html並停止測試執行
- 18. Ehcache掛在測試
- 19. 如何執行「剛試後測試」
- 20. 用回形針懸掛的Rspec測試
- 21. AngularJS e2e測試場景懸掛
- 22. 如何執行在JUnit測試測試多個文件
- 23. 如何在單次測試中多次執行單元測試?
- 24. 如何在* n *失敗測試後停止MsTest測試執行
- 25. junit 4.10:如何在運行測試時獲得測試類的名稱
- 26. 如何在運行時使用測試ng來設置測試用例名稱?
- 27. 如何在pytest運行時獲取測試名稱和測試結果
- 28. 運行Rails多次測試I18n測試
- 29. Rails進行測試,多個測試
- 30. 執行測試和單元測試
測試懸掛,而不是失敗,所以這個答案是不相關的。 – 2008-10-02 05:27:20