gpt4 book ai didi

ruby - 如何运行 Test::Unit 套件以完成测试/失败记录?

转载 作者:数据小太阳 更新时间:2023-10-29 08:41:25 24 4
gpt4 key购买 nike

我继承了一大套 Test::Unit 测试,我的首要任务之一是让套件运行完成,而不是在第一次测试失败后退出。

我目前正在拯救 AssertionFailedError 并确保输出字符串,但这似乎是错误的。什么是更好的方法?这似乎是一个配置选项。

最佳答案

更多背景知识会有所帮助。我不能说我理解您所看到的行为。

我正在使用 ruby​​ 1.8 附带的核心测试/单元库,以及 ruby​​ 1.9 的几个版本的 gem。这两者的正常行为是运行整个加载的套件直至完成并总结结果。

运行一个说明 require 'test/unit' 的脚本将添加一个退出 Hook 以运行 Test::Unit::AutoRunner 和一个 Test::Unit::Collector::ObjectSpace 收集器(即运行当前加载到全局对象空间中的每个 Test::Unit::TestCase 实例)。

编写您自己的自定义测试运行器也相当容易,它可以手动加载您的测试类并将它们打包到 Test::Unit::TestSuite 中,并捕获其结果。

但是对于我使用过的每个版本的测试/单元,我总是看到整个套件完成并报告失败和错误。代替进一步的信息,我建议用一个虚拟测试进行试验,看看你应该如何期望测试/单元的行为。

例如

require 'test/unit'
class Foo < Test::Unit::TestCase
def testFoo
flunk 'bad foo'
end
end
class Bar < Test::Unit::TestCase
def testBar
raise 'bar bar'
end
end

给予

Loaded suite foo
Started EF Finished in 0.001000 seconds.

1) Error:
testBar(Bar)
RuntimeError: bad bar
foo.rb:9:in `testBar`

2) Failure:
testFoo(Foo) [foo.rb:4]:
bad foo

2 tests, 1 assertions, 1 failures, 1 errors, 0 skips

最后:你想拯救/确保哪里?在测试方法中?在正常情况下,没有理由捕获 AssertionFailedError。这是为 Test::Unit::TestCase 做的,作为一种计算失败并为您提供所需报告的方法。捕捉到这个会干扰测试/单元的编写目的。

关于ruby - 如何运行 Test::Unit 套件以完成测试/失败记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com