我有一个非常大的规范套件(watirspec),我在Ruby gem(safariwatir)上运行它并且有很多失败:
1002 examples, 655 failures, 1 pending
当我在gem中进行更改并再次运行套件时,有时很多先前失败的规范通过(在此示例中为52):
1002 examples, 603 failures, 1 pending
我想知道哪些以前失败的规格现在正在通过,当然,如果之前传递的任何规格现在都失败了。我现在要做的是比较结果是使用--format documentation
选项运行测试并将结果输出到文本文件,然后区分文件:
rspec --format documentation --out output.txt
有更好的方法吗?比较文本文件并不是查看更改内容的最简单方法。
答案 0 :(得分:1)
只需将结果保存到您现在正在执行的文件中,然后使用一些随机差异工具来区分这些结果。
答案 1 :(得分:0)
我不知道那里能做到什么。说,如果你需要它如此糟糕,你不介意花一些时间来攻击你自己的格式化程序,看看Spec::Runner::Formatter::BaseFormatter。这是很好的记录。
答案 2 :(得分:0)
我已经为您实施了@ Serabe的解决方案。请参阅要点:https://gist.github.com/1142145。
将文件my_formatter.rb
放入spec文件夹并运行rspec --formatter MyFormatter
。格式化程序会将当前运行结果与之前的运行结果进行比较,并将差异输出为表格。
注意:格式化程序在当前文件夹中创建/覆盖文件result.txt
。
使用示例:
D:\Projects\ZPersonal\equatable>rspec spec --format MyFormatter
..........
No changes since last run
Finished in 0.011 seconds
10 examples, 0 failures
No changes since last run
行由格式化程序添加。
现在我故意打破一个并重新运行rspec:
D:\Projects\ZPersonal\equatable>rspec spec --format MyFormatter
..F.......
Affected tests (1).
PS CS Description
. F Equatable#== should be equal to the similar sock
PS - Previous Status
CS - Current Status
Failures:
1) Equatable#== should be equal to the similar sock
Failure/Error: subject.should == Sock.new(10, :black, 0)
expected: #<Sock:0x2fbb930 @size=10, @color=:black, @price=0>
got: #<Sock:0x2fbbae0 @size=10, @color=:black, @price=20> (using ==)
Diff:
@@ -1,2 +1,2 @@
-#<Sock:0x2fbb930 @color=:black, @price=0, @size=10>
+#<Sock:0x2fbbae0 @color=:black, @price=20, @size=10>
# ./spec/equatable_spec.rb:30:in `block (3 levels) in <top (required)>'
Finished in 0.008 seconds
10 examples, 1 failure
Failed examples:
rspec ./spec/equatable_spec.rb:29 # Equatable#== should be equal to the similar sock
格式化程序添加了受影响规格的表:
Affected tests (1).
PS CS Description
. F Equatable#== should be equal to the similar sock
PS - Previous Status
CS - Current Status
如果当前和上一次运行之间某些规格状态不同,格式化程序将输出先前状态,当前状态和规格说明。 ''代表通过的规格,'F'表示失败,'P'表示未决。
代码远非完美,所以请随意批评并随意更改代码。
希望这会有所帮助。如果您有任何疑问,请告诉我。