2011-06-19 32 views
5

我試圖配置自動測試,以便當我運行測試套件並且有失敗的測試時,自動測試會停止測試並等待我在再次測試之前進行更改。使用我當前的配置,自動測試在遇到失敗的測試時會不斷進行測試,使其處理時有點麻煩(必須在每次遇到失敗測試時都要終止並停止自動測試服務器)。Zentest - 如何在紅色時停止自動測試

我正在使用RSpec,Zentest和Spork的Rails應用程序。

相關Gem版本:

autotest (4.4.6) 
rspec (2.6.0) 
rspec-core (2.6.4) 
rspec-expectations (2.6.0) 
rspec-mocks (2.6.0) 
rspec-rails (2.6.1) 
spork (0.9.0.rc8) 
ZenTest (4.5.0) 

我.autotest文件:

module Autotest::Notify 
    def self.notify title, msg, img, pri='low', time=3000 
    `notify-send -i #{img} -u #{pri} -t #{time} '#{msg}'` 
    end 

    Autotest.add_hook :ran_command do |autotest| 
    results = [autotest.results].flatten.join("\n") 
    output = results.slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pending)?/) 
    folder = "~/.autotest_icons/" 
    if output =~ /[1-9]\d*\sfailures?/ 
     notify "FAIL:", "#{output}", folder+"failed.png", 'critical', 10000 
    elsif output =~ /[1-9]\d*\spending?/ 
     notify "PENDING:", "#{output}", folder+"pending.png", 'normal', 10000 
    else 
     notify "PASS:", "#{output}", folder+"passed.png" 
    end 
    end 
end 

注:我的大部分.autotest文件是讓彈出窗口在linux工作顯示,如果我的測試都通過或失敗。

我一直在尋找這個問題的答案一段時間,並沒有運氣,我發現很難得到我的手在一些很好的文檔Autotest。我一直在盯着Zentest的RDoc很長一段時間,我也必須錯過一些東西。

任何幫助,鏈接到例子等,將不勝感激。

+1

我想知道你的'.autotest'文件是否在做一些使自動測試遞歸的功能。我會盡量一次刪除一個可能的原因。例如,從組合中刪除'spork',運行帶有已知錯誤的自動測試並查看它是否繼續。如果是這樣,請將'.autotest'文件暫時移到某個地方,並在沒有'.autotest'文件的情況下有效運行,然後重試。每當我遇到非顯而易見的問題時,我都會試着走邏輯鏈並做小的修改,直到能夠隔離問題。 – Midwire

+1

PS:在給定的代碼更改後,自動測試不應該繼續運行測試。它應該運行受影響的測試,報告結果(綠色或紅色),然後停止並等待更多更改。你的配置中有東西導致這種異常。 – Midwire

+0

感謝您的迴應。說實話,這個問題似乎是相當隨意的。我現在一直在使用相同的配置運行一段時間,自動測試只會在偶爾發生紅色(可能是1/10次)時重新運行測試。我無法真正找到我正在運行的測試與奇怪的自動測試行爲之間的關係,但我會繼續嘗試。感謝您的建議,如果我最終得到明確的答案,那麼我會發布它。我現在面臨的主要問題是,每次我認爲我已經修復它時,它最終的表現會不那麼經常。 –

回答

4

我有同樣的問題,發現我的開發服務器被寫入日誌文件。在我將這個文件添加到自動測試文件後,問題就消失了:

Autotest.add_hook :initialize do |at| 
    at.add_exception(%r{^\./\.git}) 
    at.add_exception(%r{^\./log}) 
end 
1

當我有一個將數據寫入ZenTest正在監視的目錄的gem時,我發現ZenTest有類似的問題。 IIRC,它是一個全文搜索的寶石 - 搜索產生的索引文件觸發ZenTest再次運行,從而重新生成索引。

我通過修改Growl通知來跟蹤問題,告訴我哪些文件正在觸發自動測試運行(當時我在Mac上運行)。

解決方案是向.autotest文件添加一個異常/排除,以告訴它忽略該索引。

(我剛看到:Spork is repeatedly re-running failing tests in autotest這聽起來非常相似,你的問題)

相關問題