我目前正在使用test / unit,我正在考虑使用rspec。但是,我注意到rspec currently不支持ruby 1.9.1中的heckle,并且不支持将任何参数传递给heckle,而不是目标模块/类/方法。
使用heckle和rspec还有其他当前问题,还是除了这两个问题之外还能很好地协同工作?
另外,如果我暂时留在测试/单位,我应该考虑用黄瓜吗?
编辑:1.9.1问题不是rspec的错误 - heckle无法在ruby 1.9.1上运行,因为parsetree无法在ruby 1.9.1上运行。
答案 0 :(得分:4)
我最后一次检查时,Heckle + RSpec工作得不好,我认为很多人并没有一起使用它们。
早在2008年春天,我就调查了这一点,发现RSpec和Heckle在一段时间内根本没有合作过。我做了一个补丁,它被RSpec 1.1.14接受了。即使经过这些改变,我也没有发现Heckle非常实用。如果我没记错的话,问题是Heckle本身就会遇到非平凡的程序。
情况确实如此可惜。如果您想提供帮助,您可能需要查看boo-hiss项目:http://github.com/halorgium/boo_hiss/tree/master。
更新:经过两年的中断后,上周发布了新版本的Heckle(Heckle 1.4.2)。也许这解决了我遇到的问题。
答案 1 :(得分:0)
我目前正在运行heckle 1.4.2和rspec 1.2.4来测试Addressable。我建议直接使用spec命令来解决任何问题,而不是通过rake任务进行设置。 Heckling是我通常在发布之前做的事情,而不是在常规开发期间,因为它是如此耗费时间。当你试图追踪幸存的突变时,你可能想要逐个方法。
较旧版本的RSpec更加笨拙 - 为所有失败的规格转储完整的规范结果 - 但我发送了一个补丁来解决这个问题。任何最新版本都没有这个问题,并且heckling应该可以正常工作。
例如:
spec spec/**/*_spec.rb --heckle Addressable::URI#normalize
输出:
**********************************************************************
*** Addressable::URI#normalize loaded with 25 possible mutations
**********************************************************************
25 mutations remaining...
24 mutations remaining...
23 mutations remaining...
22 mutations remaining...
21 mutations remaining...
20 mutations remaining...
19 mutations remaining...
18 mutations remaining...
17 mutations remaining...
16 mutations remaining...
15 mutations remaining...
14 mutations remaining...
13 mutations remaining...
12 mutations remaining...
11 mutations remaining...
10 mutations remaining...
9 mutations remaining...
8 mutations remaining...
7 mutations remaining...
6 mutations remaining...
5 mutations remaining...
4 mutations remaining...
3 mutations remaining...
2 mutations remaining...
1 mutations remaining...
No mutants survived. Cool!
(结果不典型。)