Hasilkan laporan cakupan tes untuk proyek XCode & hook It ke CI.
Proyek | Cakupan |
---|---|
Parsimmon | |
Vencore | |
Dazabtest | |
Tbstatemachine |
Tambahkan baris ini ke gemfile aplikasi Anda:
Permata 'Slather'
Dan kemudian mengeksekusi:
$ bundel
Atau instal permata:
Permata instal Slather
Aktifkan cakupan uji dengan mencentang kotak "Kumpulkan Cakupan Data" saat mengedit skema:
Untuk memverifikasi Anda siap untuk menghasilkan cakupan tes, jalankan suite tes Anda di proyek Anda, dan kemudian jalankan:
$ COVERAGE SLATHER -S --SCHEME YourXCODESCHEMENAME PATH/TO/Project.XCODEPROJ
Jika Anda menggunakan ruang kerja di xcode, Anda perlu menentukannya:
$ COVERAGE SLATHER --SCHEME YourXCODESCHEMENAME --Workspace Path/to/workspace.xcworkspace Path/to/Project.xcodeproj
Jika Anda menggunakan konfigurasi yang berbeda untuk tes Anda:
$ COVERAGE SLATHER --SCHEME YourXCODESCHEMEName -Konfigurasi YourBuildConfigurationName Path/to/Project.xcodeproj
Jika konfigurasi Anda menghasilkan biner universal, Anda perlu menentukan arsitektur tertentu untuk digunakan:
$ COVERAGE SLATHER -S --Arch x86_64 --SCHEME YOURXCODESCHEMENAME -Konfigurasi YourSbuildConfigurationName Path/to/Project.xcodeproj
Jika Anda ingin menjalankan beberapa modul, tetapi tidak semua (seperti modul yang dibuat oleh cocoapods) Anda dapat melakukannya seperti ini:
$ COVERAGE SLATHER-BINARY-BASENAME MODULE1--BINARY-BASENAME MODULE2 PATH/TO/Project.XCODEPROJ
Anda juga dapat menambahkannya ke file .slather.yml
sebagai array:
Binary_basename: - Modul1 - Modul2
Jalankan perintah ini untuk mengaktifkan Bendera Aliran Generate Test Coverage
dan Instrument Program Flow
untuk proyek Anda:
$ Slather Setup Path/to/Project.xcodeproj
Saat menggunakan kedua file konfigurasi ( .slather.yml
) dan memberikan argumen melalui CommandLine, argumen akan diutamakan daripada pengaturan pencocokan dalam file config.
ignore
selalu menang atas source-files
Saat mendefinisikan kedua file yang harus diabaikan ( --ignore
, abaikan) dan file sumber untuk disertakan ( --source-files
, source_files), daftar abaikan diperiksa terlebih dahulu. Jika file yang dipindai cocok dengan global dalam daftar abaikan, itu tidak akan dimasukkan. Dalam hal ini, daftar Source_File tidak diperiksa.
Jika file yang dipindai tidak ada dalam daftar abaikan, dan sumber_file telah ditentukan, daftar sumber_file diperiksa. Jika file sumber cocok dengan glob, itu akan dimasukkan.
Masuk ke Codecov (tidak perlu mengaktifkan repositori, ini terjadi secara otomatis). Saat ini, slather
mendukung Codecov melalui semua penyedia CI yang didukung yang terdaftar di sini.
Membuat file .slather.yml
:
# .slather.ymlcoverage_service: cobertura_xmlxcodeproj: path/to/project.xcodeprojscheme: yourxcodeschenameconfiguration: testedConfigurationsource_directory: path/to/sources/to/include output_directore: path/tijapory: To/to/to/include output_directory: To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/To/ - ExamplePodCode/* - ProjectSgroup/*
Dan kemudian di .travis.yml
, circle.yml
(atau setelah perintah uji di penyedia CI lainnya), hubungi slather
setelah bangunan yang berhasil:
# .travis.ymlbefore_install: rvm menggunakan $ rvm_ruby_versioninstall: bundel install --without = dokumentasi --path ../travis_bundle_dirafter_success: - BRATHER -bash <(curl -s https://codecov.io/bash) -f path/to/xml_report/cobertura.xml -x coveragePy -x gcov -x xcode
# Circle.ymltest: Post: -Bundel Exec Slather- bash <(Curl -s https://codecov.io/bash) -f path/to/xml_report/cobertura.xml -x coveragePy -x gcov -x xcode
Repo pribadi? Tambah
-t :uuid-repo-token
ke pengunggah codecov. Baca lebih lanjut tentang mengunggah laporan ke Codecov di sini
Masuk untuk menutup semua dan mengaktifkan repositori Anda. Saat ini, slather
mendukung Coveralls melalui Travis CI, Circleci, Jenkins, TeamCity, Buildkite, dan Bitrise.
Buat file .slather.yml
dan tentukan layanan CI yang Anda gunakan:
# .slather.ymlci_service: Circleci | travis_ci | travis_pro | Jenkins | Buildkite | TeamCityCoverage_Service: coverallsxcodeproj: path/to/project.xcodeprojscheme: yourxcodeschemenameignore: - ExamplePodCode/* - ProjectSgroup/*
Dan kemudian di .travis.yml
atau circle.yml
atau github-action.yml
, panggil slather
setelah bangunan yang sukses:
# .travis.ymlbefore_install: rvm menggunakan $ rvm_ruby_versioninstall: bundel install --without = dokumentasi ---path ../travis_bundle_dirafter_success: slather
# Circle.ymltest: Post: - Bundel Exec Slather
# github-action.yml Myjob: Langkah: - Jalankan: | bundel konfigurasi jalur vendor/bundel bundel instal -dengan dokumentasi -jobs 4 --retri 3 -Nama: ekstrak cabang nameshell: bashrun: echo "## [set -output nama = cabang;] $ (echo $ {github_ref# refs/heads/})"id: get_branch - run: bundle exec slatherenv: GIT_BRANCH: ${{ steps.get_branch.outputs.branch }} CI_PULL_REQUEST: ${{ github.event.number }} COVERAGE_ACCESS_TOKEN: ${{ secrets. Github_token}}
Untuk menggunakan coverall dengan Travis CI Pro (untuk repo pribadi), tambahkan baris berikut bersama dengan pengaturan lainnya ke .slather.yml
:
# .slather.ymlci_service: travis_procoverage_access_token: <token akses Anda>
Token Cakupan dapat ditemukan di halaman Repo Coveralls. Atau dapat diteruskan melalui COVERAGE_ACCESS_TOKEN
lingkungan var.
Untuk membuat laporan Cobertura XML, atur cobertura_xml
sebagai layanan cakupan di dalam .slather.yml
Anda. Secara opsional Anda dapat mendefinisikan direktori output untuk laporan XML:
# .slather.ymlcoverage_service: cobertura_xmlxcodeproj: path/to/project.xcodeprojscheme: yourxcodeschemeNamesource_directory: path/to/sources/to/include output_directory: path/to/xml_reportign: to/cleitleOutput_directory: Path/to/xml_reportign: - ExamplePodCode/* - ProjectSgroup/*
Atau gunakan opsi baris perintah --cobertura-xml
atau -x
dan --output-directory
:
$ Slather Cakupan -x -Output -Directory Path/To/XML_Report
Untuk membuat laporan sebagai halaman HTML statis, gunakan opsi baris perintah --html
:
$ Cakupan Slather ---HTML --Scheme YourXCODESCHEMENAME PATH/TO/Project.XCODEPROJ
Ini akan membuat direktori bernama html
di direktori root Anda (kecuali --output-directory
ditentukan) dan akan menghasilkan semua laporan sebagai halaman HTML statis di dalam direktori. Ini akan mencetak jalur laporan secara default, tetapi Anda juga dapat menentukan --show
bendera untuk membukanya di browser Anda secara otomatis.
Secara default, HTML yang dihasilkan akan merujuk aset yang di -host secara lokal (JS, CSS). Anda dapat menentukan --cdn-assets
untuk menentukan bahwa Anda lebih suka HTML yang dihasilkan untuk menggunakan aset yang di-host secara eksternal. Ini bisa berguna jika menerbitkan file HTML sebagai artefak build.
Untuk melaporkan statistik pertanggungan ke TeamCity:
$ Cakupan Slather --TeamCity -S --SCHEME YourXCODESCHEMENAME
Jika Anda mencoba menghitung cakupan kode yang telah dimasukkan melalui cocoapods, Anda perlu memberi tahu cocoapod untuk menggunakan plugin Slather dengan menambahkan yang berikut ke Podfile
Anda.
plugin 'slather'
Anda juga perlu memberi tahu Slather di mana menemukan file sumber untuk pod Anda.
# .slather.ymlsource_directory: pods/afnetworking
Slather akan mencari file cakupan tes di DerivedData
secara default. Jika Anda mengirim output build ke lokasi khusus, seperti ini, maka Anda juga harus mengatur properti build_directory
di .slather.yml
Sertakan argumen --workspace
atau tambahkan workspace
ke .slather.yml
jika Anda membangun proyek Anda di ruang kerja. Misalnya:
$ COVERAGE $ SLATHER ---HTML --SCHEME YOUTXCODESCHEMENAME --Workspace Path/to/workspace.xcworkspace Path/to/Project.xcodeproj
Kami ingin melihat ide -ide Anda untuk meningkatkan perpustakaan ini! Cara terbaik untuk berkontribusi adalah dengan mengirimkan permintaan tarik. Kami akan melakukan yang terbaik untuk menanggapi tambalan Anda sesegera mungkin. Anda juga dapat mengirimkan masalah GitHub baru jika Anda menemukan bug atau memiliki pertanyaan.
Pastikan untuk mengikuti gaya pengkodean umum kami dan menambahkan cakupan tes untuk fitur baru!
@tpoulos, logo yang sempurna.
@Ayanonagon dan @kylef, umpan balik dan pengujian.
@jhersh, dukungan Circleci.
@tarbrain, dukungan Cobertura dan perbaikan bug.
@ikhsan, dukungan html.
@martin-key dan @troyfontaine, dukungan aksi github.