2011-08-12 31 views
1

我有一個相當大的規格套件(watirspec),我跑這對一個Ruby寶石(safariwatir),並有很多失敗的:如何比較兩個RSpec套件運行的結果?

1002 examples, 655 failures, 1 pending 

當我做創業板的變化和運行(在本例中52)套件再次,有時很多以前沒有規範的傳遞:

1002 examples, 603 failures, 1 pending 

我想知道,這在以前沒有規範現在傳球,當然如果有先前通過規範的現在失敗。我現在做的,比較的結果是運行與--format documentation選項和結果輸出到一個文本文件中的測試,然後DIFF文件:

rspec --format documentation --out output.txt 

有沒有更好的辦法?比較文本文件並不是查看更改內容的最簡單方法。

回答

0

我不知道有什麼可以做到這一點。說,如果你需要它如此糟糕,你不介意花時間攻擊你自己的格式化程序,看看Spec::Runner::Formatter::BaseFormatter。它有很好的記錄。

1

只需將結果保存到文件中,就像您現在正在執行的操作,然後僅使用一些隨機比較工具來區分這些結果即可。

+1

這就是我現在正在做的事情,但當文件太大時很難看到變化。 –

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'代表未決。

代碼遠非完美,所以隨意批評和改變它,只要你想。

希望這會有所幫助。如果您有任何問題,請告訴我。