2017-03-22 17 views
1

TeamCity 빌드 서버에서 Angular CLI 프로젝트에 대한 단위 테스트를 실행하려고합니다. 내가 명령을 사용하는 경우"ng test"가 커버리지 보고서와 TeamCity보고를 동시에 수행 할 수 없음

는 예상대로

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

후, 나는 테스트 커버리지 보고서를 얻을 수 있지만, 개별 테스트 결과 인 TeamCity에 표시되지 않습니다.

내가 인 TeamCity보고 설정 한 경우 :

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

다음 테스트를 통과하고 인 TeamCity보고는 완벽하게 작동하지만 자동으로 코드 커버리지 보고서를 작성하는 데 실패합니다. 이 동작은 로컬 컴퓨터에서 재현 할 수 있으므로 빌드 서버가 구성되는 방식과 아무 관련이 없습니다.

두 옵션이 서로 배타적이어야하는 이유가 있습니까?

참고 - 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
  • 윈도우 7 엔터프라이즈

카르마 구성 :

,691,363
// 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

(210) 나는 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

코드 커버리지 보고서는 프로젝트의 루트 아래에있는 'coverage'라는 디렉토리에있는 HTML 파일 집합입니다. TeamCity 보고서 (단위 테스트의 결과)는 표준 출력으로 이동하며 테스트가 TeamCity 빌드 서버에서 실행되는 경우에만 유용합니다. 내 로컬 컴퓨터에서 빌드를 실행할 때 TeamCity 보고서를 해제하여 터미널의 노이즈를 줄입니다. –