web-dev-qa-db-ja.com

Karma Runnerを使用してジャスミンレポートを生成する

カルマで実行されたすべての成功したジャスミン仕様のレポートを取得したいと思います。これは、ジャスミンを単独で使用した場合に得られるようなものです。

とにかくこれを達成する方法はありますか?

24
Tomas Romero

私が書いたこの簡単なプラグインを試してください:

https://github.com/dtabuenc/karma-html-reporter

21
dtabuenc

tl; dr

はい、しかしそれは簡単なことではありませんし、_--auto-watch_が必要な場合はなおさらです。したがって、基本的には、: Blame it on ---(lib/reporters/Progress.js のせいではありません。これにより、成功したテスト結果が飲み込まれ、各ブラウザーの要約行が出力されます。

ただし、決定した場合、(少なくとも)2つの重要な方法があります(v0.9.2)。 「十分な」結果を得る方法(そのうちの1つを行う場合は、磨いてプルリクエストとして送信する必要があります:-))

オプション1:jUnitスクレイピング

ほとんどのテストフレームワークと同様に、Karmaに結果を jUnit XML形式 で出力して、後処理することができます...

デフォルトでは、_karma start --reporters=junit_はjUnitレポートを_${basePath}/test-results.xml_に書き込みますが、これを_junitReporter.outputFile_構成アイテムでオーバーライドできます。

コマンドラインでjUnit出力を他のレポーター(うなり声など)と組み合わせることができることに注意してください:例:_karma start --reporters=junit,growl_

Antによる後処理

XSLTによる後処理

Xmlstarletによる後処理

私はいつも自分の愚かなgrep/sed/Perl/etcを転がしてしまいました。このような場合のパイプラインですが、このジョブには xmlstarlet が最適です。例えば。、

_$ cat test-runner.xml \
    | xml sel -t -m "//testcase" -v @classname -o " " -v @name -nl
_

利回り(私のプロジェクトの1つ):

_Chrome 27.0 (Linux).Globalization API: _g11n exists
Chrome 27.0 (Linux).Globalization API: _g11n has been initialized
Chrome 27.0 (Linux).Globalization API: _g11n _locales exists
Chrome 27.0 (Linux).Globalization API: _g11n _locales has been initialized
Chrome 27.0 (Linux).Globalization API: _g11n _locales has a current locale (matching the default)
Chrome 27.0 (Linux).Globalization API: _g11n _locales registry allows lookup by full code
Chrome 27.0 (Linux).Globalization API: _g11n _locales registry allows lookup by locale object
Chrome 27.0 (Linux).Globalization API: _g11n _locales registry fails
Chrome 27.0 (Linux).Globalization controllers hkmLocaleCtrl should have the locales database
_

オプション2:カスタムレポーターを作成する

準備ができている場合は、既存のレポーター(_lib/reporters/Progress.js_、_lib/reporters/Base.js_など)をサブクラス化し、_.specSuccess_および_.onBrowserComplete_メソッドをオーバーライドして、各テストの詳細を報告します。カルマにレポーターを使用させることは、読者の練習問題として残します:-)

ところで、オプション2を選択する場合は、プルリクエストを開いてカルマに入れるようにしてください:-)

8
Tripp Lilley

個々のテストケースを表示するには、次のコードを使用します(基本的な単体テストプロジェクトの最初から)。

npm install karma karma-jasmine karma-phantomjs-launcher karma-spec-reporter

touch main.js main.spec.js

karma init

次に、以下の質問を選択します。

Which testing framework do you want to use ?
> jasmine

Do you want to capture any browsers automatically ?
> PhantomJS
> 

What is the location of your source and test files ?
> *.js

Do you want Karma to watch all the files and run the tests on change ?
> yes

プロジェクトフォルダーのkarma.conf.jsを編集し、

交換:

レポーター:['進捗状況]]

と:

レポーター:['spec']

走る

karma start

そして、main.spec.jsに単体テストを記述する準備ができました

describe('suite', function () {
    it('expectation', function () {
        expect(true).toBeTruthy();
    });
});

保存...そしてターミナルには次のようなものが表示されます:

INFO [watcher]: Changed file"/main.spec.js".
true
  ✓ should be true

PhantomJS 1.9.8 (Mac OS X): Executed 1 of 1 SUCCESS (0.001 secs / 0 secs)
2
Daniele Urania