1

TeamCityビルドサーバーでAngular CLIプロジェクトの単体テストを実行しようとしています。"ng test"はカバレッジレポートとTeamCityレポートを同時に実行できません

私はコマンドを使用する場合:その後、

ng test --single-run --code-coverage 

を、予想通り、私はテストカバレッジレポートを取得しかし、個々のテスト結果はチームシティーでは表示されません。

私は報告チームシティーをオンにした場合:

ng test --single-run --code-coverage --reporters teamcity 

を、その後のテストに合格し、チームシティー報告が完璧に動作しますが、それは静かにコードカバレッジレポートを生成するために失敗しました。この動作はローカルマシン上で再現可能なので、ビルドサーバーの設定方法とは関係ありません。

これらの2つのオプションが互いに排他的である必要がある理由はありますか?

注 - これはConfiguring code coverage report for Karma on TeamCityと同じ問題ではありません。レポートがある場合、TeamCityは正しく表示しますが、TeamCityレポートフラグをオンにすると、カバレッジフォルダは存在しません。

追加情報:

  • 角度-CLIバージョン1.0.0-rc.4
  • カルマバージョン1.4.1
  • ノードのバージョン(最初1.0.0-rc.1を使用して発見した問題) 6.9.4
  • のWindows 7エンタープライズ

カルマ構成:

// Karma configuration file, see link for more information 
// https://karma-runner.github.io/0.13/config/configuration-file.html 

module.exports = function (config) { 
    config.set({ 
    basePath: '', 
    frameworks: ['jasmine', '@angular/cli'], 
    plugins: [ 
     require('karma-jasmine'), 
     require('karma-chrome-launcher'), 
     require('karma-jasmine-html-reporter'), 
     require('karma-coverage-istanbul-reporter'), 
     require('@angular/cli/plugins/karma'), 
     require('karma-teamcity-reporter') 
    ], 
    client:{ 
     clearContext: false // leave Jasmine Spec Runner output visible in browser 
    }, 
    files: [ 
     { pattern: './src/test.ts', watched: false } 
    ], 
    preprocessors: { 
     './src/test.ts': ['@angular/cli'] 
    }, 
    mime: { 
     'text/x-typescript': ['ts','tsx'] 
    }, 
    coverageIstanbulReporter: { 
     reports: [ 'html', 'lcovonly' ], 
     fixWebpackSourcePaths: true 
    }, 
    angularCli: { 
     environment: 'dev' 
    }, 
    reporters: config.angularCli && config.angularCli.codeCoverage 
       ? ['progress', 'coverage-istanbul'] 
       : ['progress', 'kjhtml'], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: true, 
    browsers: ['Chrome'], 
    singleRun: false 
    }); 
}; 

答えて

2

私はissue on GitHubとしてこれを提起し、角度-CLIチームがソリューションを指摘:

ng test --single-run --code-coverage --reporters=teamcity,coverage-istanbul 
  • 記者リストは、カバレッジ・ツールが含まれている場合--code-coverageオプションにのみ機能します。カバレッジレポーターが存在しない場合、それは黙って失敗します。
  • --reportersスイッチがデフォルトのレポーターリストに置き換わるので、coverage-istanbulを明示的に再追加する必要があります。
  • coverage-istanbulレポーターは独自のレポートを作成しません。 --code-coverageスイッチが必要です。
+0

こんにちは、これらのレポートの出力はどのディレクトリにありますか? – Coolbreeze

+0

コードカバレッジレポートは、プロジェクトのルートの下にある「カバレッジ」というディレクトリ内の一連のHTMLファイルです。 TeamCityレポート(単体テストの結果)は標準出力に送られ、テストがTeamCityビルドサーバー上で実行されている場合にのみ有効です。私のローカルマシンでビルドを実行するとき、TeamCityレポートをオフにして、端末のノイズを減らします。 –

関連する問題