RSpec + SimpleCov로 측정 한 커버리지 보고서를 Gitlab Pages에 호스팅
RSpec + SimpleCov로 측정 한 커버리지 보고서를 Gitlab Pages에 호스팅
할 일
simplecov에서 rspec에서 실행 한 테스트 커버리지 보고서를 출력합니다
절차
rspec과 simplecov 도입
이미 도입된 경우에는 적절히 날려 주십시오.
gem 설치
Gemfile
gem 'rspec'
gem 'simplecov'
$ bundle install
spec_helper.rb에 simplecov를로드하는 설정 추가
spec_helper.rb
require 'simplecov'
SimpleCov.start
.gitlab-ci.yml에 pages 작업 추가
pages
작업을 추가합니다.기본적으로는 다음과 같은 흐름이 됩니다.
.gitlab-ci.yml
image: ruby:2.6
before_script:
- bundle install
pages:
stage: deploy
script:
- bundle exec rspec
- mv coverage public
coverage: '/\(\d+.\d+\%\) covered/'
artifacts:
paths:
- public
only:
- master
Gitlab Pages는 public 디렉토리의 내용을 호스팅하지만,
Rails의 경우 public 폴더를 사용하고 있다고 생각하므로
coverage
를 public
로 이동하기 전에,아래와 같이 public 디렉토리를 피하면 좋다고 생각합니다.
.gitlab-ci.yml
script:
- bundle exec rspec
- mv public .public # publicディレクトリを避ける
- mv coverage public
이하 줄은 있어도 없어도 좋다고 생각합니다만, 써 두면,
작업의 출력 결과 사이드바에 커버리지가 표시되는 것 같습니다.
.gitlab-ci.yml
coverage: '/\(\d+.\d+\%\) covered/' # Job出力結果から正規表現でカバレッジを取得する
최선을 다하고 테스트 작성
commit and push
배지 표시 설정
테스트 커버리지 분석 설정
Settings
> CI / CD
> General pipelines
> Test coverage parsing
를 열면 Simplecov (Ruby)
의 example이 쓰여 있기 때문에, 말씀대로 붙여 넣고 저장해 봅니다.※Job의 출력 결과로부터 커버리지를 픽업하기 위한 정규 표현입니다.
프로젝트에 라벨 추가
Settings
> General
> Badges
을 열고 프로젝트 배지를 등록합니다.Link
: 배지 도착 (배포 된 커버리지 보고서 URL)https://グループ名.gitlab.com/プロジェクト名
와 같습니다.Settings
> Pages
에서 확인할 수 있습니다.Badge image URL
: 배지 이미지 URLhttps://gitlab.com/グループ名/プロジェクト名/badges/ブランチ名/coverage.svg
와 같습니다.목표
이제 프로젝트의 톱 페이지에 배지가 표시됩니다!
배지를 클릭하면 커버리지 보고서가 표시됩니다.
편리
일단 설정하면
master
에 병합할 때마다 테스트가 자동 실행되어 커버리지 리포트가 남기 때문에, 매우 편리하게 사용하고 있습니다!눈에 보이는 곳에 숫자가 있으면 테스트를 작성하는 것이 재미 있습니다
끝까지 읽어 주셔서 감사합니다.
샘플 프로젝트
샘플 프로젝트를 아래에 둡니다. 참고로. .
htps : // 기트 b. 코 m / 감기의 거리 / 코 ょ 라게 _ 사 mp ぇ
Reference
이 문제에 관하여(RSpec + SimpleCov로 측정 한 커버리지 보고서를 Gitlab Pages에 호스팅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazenomachi/items/5024ab5913f2607a0c7f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)