5

テスト スイートを実行して失敗したテストがある場合、autotest がテストを停止し、変更を加えるのを待ってから再度テストするように、autotest を構成しようとしています。私の現在の構成では、失敗したテストに遭遇した場合、自動テストは無期限にテストを続け、対処するのが少し面倒です (失敗したテストを取得するたびに、ターミナルにタブで移動して自動テストサーバーを停止する必要があります)。

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を凝視してきましたが、何かが欠けているに違いありません。

ヘルプ、例へのリンクなどは大歓迎です。

4

2 に答える 2

4

同じ問題が発生し、開発サーバーがログ ファイルに書き込みを行っていることがわかりました。これを .autotest ファイルに追加した後、問題はなくなりました。

Autotest.add_hook :initialize do |at|
  at.add_exception(%r{^\./\.git})
  at.add_exception(%r{^\./log})
end
于 2011-09-24T22:36:46.207 に答える
1

ZenTest が監視しているディレクトリにデータを書き込む gem があるとき、ZenTest で同様の問題が発生しました。IIRC によると、これは全文検索を行う gem でした。検索によって生成されたインデックス ファイルが ZenTest の再実行をトリガーし、それによってインデックスが再生成されました。

どのファイルが自動テストの実行をトリガーしているかを教えてくれるように、Growl 通知を変更して問題を追跡しました (当時、私は Mac で実行していました)。

解決策は、例外/除外を .autotest ファイルに追加して、インデックスを無視するように指示することでした。

(私はちょうど見ました: Spork は autotest で失敗したテストを繰り返し再実行していますが、これはあなたの問題に非常によく似ています)

于 2011-07-13T10:49:09.963 に答える