2012-04-01 8 views
5

例外が発生し、それは言うだろうすべては、私は、例外が発生した場所を私が見ることができるように、それがバックトレースまたは他の場所の情報を印刷するために取得するにはどうすればよい例外時にバックトレースを印刷するためにQUnITを取得するにはどうすればよいですか?私QUnitのテストで

Died on test #n: message 

のですか?

+0

最新のQUnitは、Safariでもキャッチした例外のソース行を出力します。これは、そうでなければスタックトレースを生成する際に非常に悪いことです。 –

答えて

5

私は、QUnitでエラーが発生した場所のトレースを作成することはできないと思います。あなたのコードは例外を生成しています。これはQUnitが捕捉し報告したものです。 QUnit結果の一番上にある 'notrycatch'チェックボックスをオンにすると、テストは再び実行されますが、今回はQUnitが例外を捕捉しません。あなたのブラウザーは実際に何が起こったかについてより多くの情報を提供するかもしれませんが、エラーの内容によって異なります。

+0

私はブラウザ内でQUnitを実行していないので、プログラムでオプションを設定するためのドキュメントが見つかりません。どのようにするか知っていますか? –

+0

ブラウザを使用していないのにURLに「?notrycatch = true」を追加すると便利なのかどうかは分かりませんが、チェックボックスをチェックするのと同じです。 –

+4

私はこの答えを受け入れるでしょう。私はプログラムでそれを行う方法を考え出した:qunit.config.notrycatch = true; –

0

編集: これに答えると、私が疑問を投げかけたのはあなたが求めていたものではありません。だから私は、最初の部分、おそらくより便利、これを表示する答えを編集した:

「例外が私のQUnitのテストで発生した場合、」あなたが書いているので、私はもう少し深さでのテストの概念を説明しましょう:

まず第一に:あなたのコードではなく、あなたのQUnitテストで例外が発生します。良いニュースは次のとおりです。qUnitは、あなたのコードをテストし、コードが間違っていると、テスト時にコードが例外を発生させます。

qUnitはテスト環境であるため、例外トレースバックを提供する責任はありません。実装された機能が、バグを追跡するのではなく、動作するように動作するかどうかをチェックするのはその場所だけです。そのような目的のために、FireBugやSafariの開発ツールなどのツールがはるかに適しています。

は私がシナリオを説明してみましょう:

  1. あなたが機能
  2. を書くあなたはFirebugの
  3. でそれからバグをなくすあなたは機能をprooveするqUnitのテストケースが実際にどのような を行い、書き込み(すなわち。)テストが合格する
  4. (これは実際にテストするものが実際に のため興味深いです) が必要なので、関数にいくつかの関数を追加します。
  5. あなたがすべての権利を行っている場合は、あなたのテストに合格し、あなたは彼らがそれを要約すると(あなたがそれらをよく書かれている場合)

を行うので、すべてが期待どおりに動作し続けます 確認することができます。 テストはデバッグ用ではなく、動作すると思うように動作することを保証するためのものです。バグが表示された場合、それを解決するためのテストは書きませんが、それを再現するためのテストを作成します。次に、バグを見つけて削除し、テストが合格になります。後でバグが再現された場合(つまりコード変更のため)、テストは再び失敗し、バグが戻ってきたことがすぐにわかります。

これは、テスト駆動型開発を確立することによってさらに機能させることができます。この開発では、機能を記述する前にテストを書くことができます。そして、上記のシナリオは、これに変更します

  1. あなたのコードの予想される結果
  2. バグがあなたが(すなわち、それらを追跡表示されたときに、コードを書くの記述、テストを書きます。

    :追加機能を追加する際に進行しながら) Firebugの
  3. 、次々テストが
  4. を渡すために開始します、あなたは最初にそうすることで二つの大きな利点があり、追加 テスト

を書きます

  1. コードで実行するコードを正確にピンダウンする必要がある場合は、 これ以外の場合は、テストを記述できないためです。

ハッピーテスト。

編集終了 - 元々の回答は、ちょうど必要な場合があります。

は、あなたがそのqunit.jsとqunit.cssファイルと 提供を含める必要がQUnitを使用するには:QUnitを使用する場合

私は強くjQueryのドキュメントサイトhttp://docs.jquery.com/Qunitに示されたアプローチに従うことをお勧めしますテスト結果を表示するための基本的なHTML構造:

あなたがしなければならないのは、テスト・プロセスについての視覚的なフィードバックを得るためにあなたのページにこのスニペットを入れ、その後、qunit.jsとqunit.cssファイルをロードすることです。

<h1 id="qunit-header">QUnit example</h1> 
<h2 id="qunit-banner"></h2> 
<div id="qunit-testrunner-toolbar"></div> 
<h2 id="qunit-userAgent"></h2> 
<ol id="qunit-tests"></ol> 
<div id="qunit-fixture">test markup, will be hidden</div> 

このようにすると、テスト結果に関する正確なレポートを表示するきれいにレンダリングされた対話型のコンソールが表示されます。合格したかどうかを示す行があります。その行をクリックすると、各単一テストの結果が展開されます。あなたは自分のテストに示される文字列を追加する必要がqUnitショー、エラーメッセージをカスタマイズするには

qUnit test results

:これはやや次のようになります。だからではなく、

ok($('.testitem:first').is(':data(droppable)')) 

使用

ok($('.testitem:first').is(':data(droppable)'), 
    "testitem is droppable after calling setup_items('.testitem')"); 

の画像に表示されるエラーメッセージを取得します。それ以外の場合、qUnitは、使用されたテストに関連する何らかの標準エラーメッセージに戻ります。

+1

それはすべて良いですが、ほとんど無関係です。彼の質問はqunit.config.notrycatch = trueで答えることができます。 – aehlke

+0

興味深い - そのような "モード"を切り替える必要がある - 私は固執し、他の多くの人を私は確信している。 qunitがデバッグプロセスをより良くサポートできるようにする方法があるのではないかと思います... –

関連する問題