2015-01-03 14 views
5

フェイルが発生したときにテストスイートを続行する方法はありますか?例によって :CasperJSでアサーションが失敗した場合のテストケースを続行するには?

casper.test.begin("",3,function suite(){ 
    casper.start(url).then(function(){ 
    test.assert(...); 
    test.assert(...); //If this assert fail, the script stop and the third assert isn't tested 
    test.assert(...); 
    }).run(function(){ 
    test.done(); 
    }); 
}); 

私はすべてのアサートをしたいが、一部に障害が発生した場合でも、テストされています。出来ますか?

+0

をユニットテストのために、この動作は、あなたが通常望むものです。 「検証」アプローチを使用することができます。これは、テストの実行をチェックしますが、停止することはありません(下記の回答に示唆されているように)。あなたがこのような状況を抱えることは、通常、悪いテストデザインについてのシグナルを説明するようになります。 1回のテストであまりにも多くのテスト。このソリューションは、別々のテストに分割されます。 – buxter

答えて

6

casperjs google group postを参照してください。私たちは、私がしたいようにこのフォローのコードが動作casper.then(..

でアサートを囲むことができます(ただし、この方法は、おそらく最高ではないでしょうか?)

casper.test.begin("",3,function suite(){ 
    casper.start(url).then(function(){ 
    casper.then(function(){ 
     test.assert(...); //if fail, this suite test continue 
    }); 
    casper.then(function(){ 
     test.assert(...); //so if assert(1) fail, this assert is executed 
    }); 
    casper.then(function(){ 
     test.assert(...); 
    }); 
    }).run(function(){ 
     test.done(); 
    }); 
}); 
+0

これはDarrenの提案よりも悪いテストですが、あなたのウェブサイトをテストするためにCasperJSの上にフレームワークを構築すると、これはおそらくよりクリーンなアプローチになります。 –

4

これは、通常、単体テスト時に必要なことです。とにかく失敗する場合は、すぐに実行してください。私。各テスト機能の最初の問題で失敗します。また、後のテストでは通常、以前のテストに合格したものとみなします。ページのタイトルが間違っていて、404と表示されている場合は、ページ上に正しい数のイメージがあることをテストするポイントはありません。

あなたがテスト結果により多くの情報を得ることができ、そしてそれを行うための一つの方法は、単一のアサートおよびカスタムエラーメッセージを使用するようになるように、私はあなたがこれをしたい推測しています:

var title = this.getTitle(); 
var linkText = this.getHTML('a#testLink'); 
this.assert(title == "MyPage" && linkText == "continue", 
    "title=" + title + ";a#testLink = " + linkText); 

しかし、厄介になることがあります。あなたは機能のassertファミリのすべての電源を使用し、それらを投げ、代わりに続けていたい場合は、the source codeの研究は、これがうまくいくかもしれないことを示しています

test.assert(false, null, {doThrow:false}); 
test.assertEquals(1 == 2, null, {doThrow:false}); 
test.assertEquals(2 == 2); 

そして、あなたがこのようにしたい場合あなたのすべてのアサートでデフォルトの動作、よく、コードをハッキングするのが最善の選択かもしれません! (デフォルトのtruedoThrowに変更すると、falseになります)

+0

私はちょうど別の解決策を見つける=)私はこれを書いて – user2137454

+0

はい、それは別の方法です、良い見つける。 –

関連する問題