2012-04-02 4 views
2

私はアプリケーションのテストスイートを実行するためにレーキタスクを使用しています。私は、タスクを起動したときには、コマンド[...]が私のgemsetですくい宝石へのパスですレイクテストタスクを終了させる原因となっているファイル/テストがどのように見つかっていますか?

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

を実行していることがわかります
。私は、タスクを実行すると

、私はいくつかの警告を持って、いくつかの.terminated

ログの例をいくつかのテストに合格したが、私が終わることを意味する:7431がPIDであることを

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

は注意してください。

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

これを修正するために何をすればよいのですか?私にはわからない

答えて

0

、どのようなプロセスは、「終端」-messageを作成しますが、次のことを試みることができる:

あなたのすべてのテストに

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

を追加します。

例:

Loaded suite test 
Started 
.>Exit code: 1 

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 

結果はテストが停止していると、あなたはどこに表示されません。私はこれがあなたの "Terminate"メッセージと同様の状況であることを願っています。

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

最後に述べたtest_2が問題を有するものである:これは、その結果

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 

は今いくつかのコードを追加します。

また、各TestCaseにsetupteardownを追加することもできます(ただし、独自の定義がある場合は、テストコードは含まれません)。

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 

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

関連する問題