2

アプリケーションのテストスイートを実行するためにrakeタスクを使用しています。
タスクを起動すると、コマンドが実行されることがわかります

ruby -I"lib:test" -I"[...]/lib" "[...]/lib/rake/rake_test_loader.rb" "vendor/plugins/shop/test/**/*_test.rb"

[...]私のジェムセットのレーキジェムへのパスはどこにありますか。

タスクを実行すると、いくつかの警告が表示され、いくつ.かのテストに合格したことを意味しますが、最終的にはterminated

ログの例:

...................................... 7431 Terminated

7431がPIDであることに注意してください。

このケースに関する情報が見つかりません。冗長またはトレースオプションは、テストスイートが壊れている場所を特定するのに役立ちません。

誰かがこれを修正するために私が何ができるか知っていますか?

4

1 に答える 1

0

どのプロセスが「終了」メッセージを作成するのかわかりませんが、次のことを試すことができます。

追加する

def setup
  puts "Start test #{self.__name__}"
  STDOUT.flush
end
def teardown
  puts "Finished test #{self.__name__}"
  STDOUT.flush
end

すべてのテストに。

例:

require 'test/unit'

class Mytest < Test::Unit::TestCase
  def test_1
    assert_equal(1,1)
  end
  def test_2
    assert_equal(1,1)
    exit 1  ##stops the execution
  end
  def test_3
    assert_equal(1,1)
  end
end

結果は

Loaded suite test
Started
.>Exit code: 1

テストが停止し、場所がわかりません。これがあなたの「終了」メッセージと同様の状況であることを願っています。

次に、コードを追加します。

require 'test/unit'

class Mytest < Test::Unit::TestCase
  def setup
    puts "Start test #{self.__name__}"
    STDOUT.flush
  end
  def teardown
    puts "Finished test #{self.__name__}"
    STDOUT.flush
  end
  def test_1
    assert_equal(1,1)
  end
  def test_2
    assert_equal(1,1)
    exit 1  ##stops the execution
  end
  def test_3
    assert_equal(1,1)
  end
end

これにより、次のようになります。

Loaded suite test
Started
Start test test_1
Finished test test_1
.Start test test_2
Finished test test_2

最後に述べtest_2たのは問題のあるものです。

各TestCaseにとを追加することもできます(ただし、セットアップ/ティアダウンに独自の定義がある場合は、テストコードは含まれませんsetup)。teardown

require 'test/unit'

class Test::Unit::TestCase
  def setup
    puts "Start test #{self.__name__}"
    STDOUT.flush
  end
  def teardown
    puts "Finished test #{self.__name__}"
    STDOUT.flush
  end
end

コードを削除することを忘れないでください-それはあなたの問題がどこにあるかを特定することだけです。

于 2012-10-18T19:22:05.027 に答える