ruby – 如何从Test :: Unit :: TestCase获取堆栈跟踪

发布时间:2019-11-12 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了ruby – 如何从Test :: Unit :: TestCase获取堆栈跟踪脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在测试一些 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给我一个完整的堆栈跟踪?

解决方法

查看Ruby 1.8中Test :: Unit的代码,似乎所有错误都通过Test :: Unit :: Error对象,该对象过滤了#long_display方法中的回溯.没有配置,所有跑步者都将使用相同的过滤轨迹.

蛮力的猴子补丁得到整个痕迹:(我把它放在我的单个测试用例文件中;也许你可以把它放在一个测试助手)

require 'test/unit/util/backtracefilter'

module Test::Unit::Util::BacktraceFilter
  def filter_backtrace(backtrace,prefix=nil)
    backtrace
  end
end

和Ruby 1.9的猴子补丁(使用minitest)

def MiniTest.filter_backtrace(bt)
  bt
end

总结

以上是脚本之家为你收集整理的ruby – 如何从Test :: Unit :: TestCase获取堆栈跟踪全部内容,希望文章能够帮你解决ruby – 如何从Test :: Unit :: TestCase获取堆栈跟踪所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。

脚本之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ” ,选择关注!
精选程序员所需精品干货内容!

标签: