5

大量のQUnitテストをJasmineに変換しています。QUnitでは、すべてのテストモジュールのテストの総数を上部に表示することに慣れています。例えば:

テストは157ミリ秒で完了しました。

528の528のテストに合格し、0は失敗しました。

テストの数は重要な情報だと思います。ただし、Jasmineのサンプルテストランナーは、テストの総数を表示しません。むしろ、次のようなものが得られます。

106仕様に合格

これらの各仕様には、任意の数の個別のテストを含めることができます。実行されたテストの総数を判別して、テストランナーに表示できるようにすることはできますか?オンラインとJasmineのドキュメントで情報を探しましたが、これまでのところ何も見つかりませんでした。


解決

@ggozadの返信に基づいて、コンソールに出力する次の解決策を考え出しました。それを改善する方法や、結果をJasmineのHTML出力にきれいに追加する方法についての提案を歓迎します。

var jasmineEnv = jasmine.getEnv();
var htmlReporter = new jasmine.HtmlReporter();
var reportRunnerResults = htmlReporter.reportRunnerResults;

htmlReporter.reportRunnerResults = function(runner) {
    reportRunnerResults(runner);

    var specs = runner.specs();
    var specResults;
    var assertionCount = {total: 0, passed: 0, failed: 0};

    for (var i = 0; i < specs.length; ++i) {
        if (this.specFilter(specs[i])) {
            specResults = specs[i].results();
            assertionCount.total += specResults.totalCount;
            assertionCount.passed += specResults.passedCount;
            assertionCount.failed += specResults.failedCount;
        }
    }

    if (console && console.log) {
        console.log('Total: ' + assertionCount.total);
        console.log('Passed: ' + assertionCount.passed);
        console.log('Failed: ' + assertionCount.failed);
    }
};

jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function(spec) {
    return htmlReporter.specFilter(spec);
};

window.onload = function() {
    jasmineEnv.execute();
};

コンソール出力の例:

Total: 67
Passed: 67
Failed: 0 
4

2 に答える 2

4

スペックはジャスミンでのテストです。その中には、他のテストフレームワークのアサーションと同様 の期待があります。したがって、報告される仕様の数は、各呼び出しの合計です。it

it('passes some expectations', function () {
  ...
});

通常、いくつかのユニットのようなテストを1つにitグループ化します。これは、機能をグループ化し、アプリケーションがどのように開発されているかについて、より一貫性のあるビューを提示するのに役立ちます。

これで、仕様で失敗/成功した期待について知りたいと主張する場合は、いつでもレポーターからこの情報を取得できます。たとえば、のインスタンスを設定する場合htmlReporter、次のことができます。

htmlReporter.reportRunnerResults = function (runner) {
...
};

関数内では、あらゆる種類のものをチェックできます。ここにいくつかのヒントがあります。

  • runner.specs()あなたにすべてのスペックを与えます
  • それらのそれぞれについて、あなたの期待についての情報specresults = spec.results()与えるでしょう。
  • results.totalCount、、はあなたが探しているものです; results.failedCountresults.passedCount
于 2012-07-17T18:38:21.913 に答える
0

非常に役立つ情報。コンソールに書き込むのではなく、ページに追加することをお勧めします。コンソールスクリプトを...に置き換えることができます。

var d1 = document.createElement("span");
$(d1).css('font-size', '10pt');
$(d1).html(' (Total Expectations: ' + assertionCount.total);
$(d1).append(', Total Expectations Passed: ' + assertionCount.passed);
$(d1).append(', Total Expectations Failed: ' + assertionCount.failed);
$(d1).append(')');
$(".passingAlert").append(d1);
$(".resultsMenu").append(d1);
于 2013-09-16T17:07:47.817 に答える