26

ジャスミンを単独で使用したときに得られるような、カルマで実行されたすべての成功したジャスミン スペックのレポートを取得したいと考えています。

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

4

4 に答える 4

22

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

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

于 2013-10-02T04:54:58.637 に答える
8

tl;dr

はい、しかしそれは自明ではありません--auto-watch。したがって、基本的にはありません :-( lib/reporters/Progress.jsのせいにしてください。これは、成功したテスト結果を飲み込み、各ブラウザーの要約行を吐き出します。

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

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

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

デフォルトでkarma start --reporters=junitは、 は jUnit レポートを に書き込み${basePath}/test-results.xmlますが、構成アイテムでこれをオーバーライドできますjunitReporter.outputFile

コマンドラインで jUnit の出力を他のレポーター (grow など) と組み合わせることができることに注意してください。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 を選択した場合は、プルリクエストを開いてカルマに入れるようにしてください :-)

于 2013-05-31T20:12:08.560 に答える
2

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

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)
于 2015-05-19T10:42:08.963 に答える
-1

.html コード カバレッジ レポートを作成する karma-coverage があります。カルマ設定に統合するのは簡単です。

https://github.com/karma-runner/karma-coverage

npm install karma-coverage --save-dev

karma.conf.js に追加します。

// karma.conf.js
module.exports = function(config) {
  config.set({
    files: [
      'src/**/*.js',
      'test/**/*.js'
    ],

    // coverage reporter generates the coverage
    reporters: ['progress', 'coverage'],

    preprocessors: {
      // source files, that you wanna generate coverage for
      // do not include tests or libraries
      // (these files will be instrumented by Istanbul)
      'src/*.js': ['coverage']
    },

    // optionally, configure the reporter
    coverageReporter: {
      type : 'html',
      dir : 'coverage/'
    }
  });
};
于 2014-06-05T09:28:50.650 に答える