【发布时间】:2012-02-19 02:23:28
【问题描述】:
我正在测试一些 Ruby 代码并且有一个失败的 Test::Unit::TestCase。不幸的是,失败报告只给了我最上面的错误,而不是完整的堆栈跟踪。具体来说,它说:
1) Failure:
test_tp_make(TestScripts::TestTpMake) [test/test_scripts.rb:73]:
Exception raised:
<#<NoMethodError: undefined method `[]' for nil:NilClass>>.
引用的行号 (73) 是我的测试用例中 assert_nothing_raised 代码块的开始,该代码块又启动另一个代码块,该代码块又调用一个大型库。
我尝试使用 --verbose 标志运行测试,不幸的是这不会改变异常输出。我尝试查阅 Test::Unit 文档,但它似乎没有列举可用的选项(例如,没有什么有用的 here)。搜索 Web 和 StackOverflow 找到了一些关于如何在 Rails 中启用堆栈跟踪的答案,但这是非 Rails ruby 代码。
我可以从测试中提取失败的代码并在 Test::Unit 之外运行它,从而使我能够看到所有输出。但是每次测试失败时都这样做会很痛苦。
有谁知道如何让 Test::Unit 给我一个完整的堆栈跟踪?
【问题讨论】:
-
您是否使用
rake运行测试? -
这是在 Ruby 1.8、Ruby 1.9 还是两者中?