1

YUI3テストモジュール(http://yuilibrary.com/yui/docs/test/)を使い始めました。

状態を検証する多くのアサーションを含むテストケースがあります。アサーションの1つが失敗した場合、TestConsoleはアサーションが失敗したことを示しますが、テスト内の多くのアサーションのどれが失敗したかを示しません。失敗メッセージに行番号を報告させるのは素晴らしいことです。

ブラウザの例外には実際にはJS障害の行番号が含まれていますが、YUI3 Testクラスはこれを除外し、行番号が含まれていないように見える独自の例外をスローします。YUI3テストクラスをハーネスとして利用しながら、このレポートを追加する簡単な方法はありますか?

4

1 に答える 1

0

tl;drから始めます

YUI3には、失敗したテストの行番号を表示するための固有の方法はありません。Errorコンストラクターを操作して、それらに問い合わせることができると思います。ただし、問題は、Error.lineNumberが特定のブラウザでのみサポートされていることです(Mozillaのみであると思います)。

それがうまくいったとしても、これは少し複雑であることに気付くでしょう。常に必ず行う必要があります。

throw new Error*(...);

呼び出しコードでは、常に次のことを行う必要があります。

try {...} catch(e) { /* e.lineNumber */ }

そして、これがすべてうまくいき、あなたがこれを喜んでやったとしても、私はそれをお勧めしません。

本当の答え

問題の根本は、テストメソッドに複数のアサートがあるように見えることです。実用的であろうとしている開発者は、「テスト方法ごとに1つのアサーション」は不合理で独断的であると言うことがあります。テストメソッドごとに複数のアサーションが適切であると考えるのは非常に魅力的です...そうでない場合まで。

複数のアサーションの方が良い場合もあると思いますが、まだ見ていません。私は何年もテストしてきました、そしてここに私が見つけたものがあります:

  1. メソッドごとに複数のアサーションを試してみましたが、失敗したアサーションがわからないという問題に悩まされるたびに。ここでは貨物の耕作はありません...私は両方を試しましたが、2つの方法論のうち、1つだけが私を噛みませんでした。
  2. テストごとに1つのアサーションを使用すると、テスト対象/方法について実際に考える必要があります。

読む:

于 2012-05-05T16:26:57.267 に答える