ruby – 如何从Test :: Unit :: TestCase获取堆栈跟踪
发布时间:2020-12-16 19:39:36 所属栏目:百科 来源:网络整理
导读:我正在测试一些 Ruby代码,并且有一个失败的Test :: Unit :: TestCase.不幸的是,故障报告只给我最大的错误,而不是一个完整的堆栈跟踪.具体来说,它说: 1) Failure:test_tp_make(TestScripts::TestTpMake) [test/test_scripts.rb:73]:Exception raised:#NoMeth
我正在测试一些
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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |