Générez des rapports de couverture de test pour les projets Xcode et accrochez-le dans CI.
Projet | Couverture |
---|---|
Parsimmon | |
Vencore | |
Dazabtest | |
Tbstatemachine |
Ajoutez cette ligne à Gemfile de votre application:
Gem 'Slather'
Puis exécuter:
$ Bundle
Ou installer le gemme:
Gem Installer Scather
Activez la couverture de test en cochez la case "Recueillir des données de couverture" lors de la modification d'un schéma:
Pour vérifier que vous êtes prêt à générer une couverture de test, exécutez votre suite de test sur votre projet, puis exécutez:
$ Slather Coverage -s - Scheme YourXcodescheMename Path / To / project.xcodeproj
Si vous utilisez un espace de travail dans Xcode, vous devez le spécifier:
$ Slather Coverage -s - Scheme YourXcodeschememeName --workspace Path / To / Workspace.xcWorkspace Path / To / project.xcodeproj
Si vous utilisez une configuration différente pour vos tests:
$ Slather Coverage -S - Scheme YourXcodeschememeName - Configuration YourBuildConfigurationName Path / To / project.xcodeproj
Si votre configuration produit un binaire universel, vous devez spécifier une architecture spécifique à utiliser:
$ Slather Coverage -S --arch x86_64 - Scheme YourXcodeschememeName - Configuration YourBuildConfigurationName Path / To / project.xcodeproj
Si vous souhaitez exécuter des modules, mais pas tous (comme les modules créés par CocoAPods), vous pouvez le faire comme ceci:
$ Slather Couverture - Binary-Basename Module1 - Binary-Basename Module2 Path / To / project.xcodeproj
Vous pouvez également l'ajouter au fichier .slather.yml
en tant que tableau:
binary_basename: - Module1 - Module2
Exécutez cette commande pour activer les indicateurs de flux Generate Test Coverage
et Instrument Program Flow
de génération pour votre projet:
$ Slather Configuration Path / To / project.xcodeproj
Lorsque vous utilisez à la fois un fichier de configuration ( .slather.yml
) et en fournissant des arguments via la ligne de commande, les arguments auront la priorité sur le paramètre correspondant dans le fichier de configuration.
ignore
gagne toujours sur source-files
Lors de la définition des deux fichiers qui doivent être ignorés ( --ignore
, ignorer) et des fichiers source à inclure ( --source-files
, source_files), la liste Ignore est d'abord vérifiée. Si le fichier analysé correspond à un globe dans la liste Ignore, il ne sera pas inclus. Dans ce cas, la liste Source_File n'est pas vérifiée.
Si le fichier analysé n'est pas dans la liste Ignore et Source_File a été défini, la liste Source_File est cochée. Si le fichier source correspond à un glob, il sera inclus.
Connectez-vous à CodeCov (pas besoin d'activer un référentiel, cela se produit automatiquement). À l'heure actuelle, slather
prend en charge CodeCov via tous les fournisseurs CI pris en charge répertoriés ici.
Faire un fichier .slather.yml
:
# .slather.ymlcoverage_service: cobertura_xmlxcodeproj: path / to / project.xcodeprojscheme: yourxcodeschemememenameConfiguration: TestedConfigurationsource_Directory: path / to / sources / to / includeout_Directory: path / to / to / xml_reportignorre: - ExemplePodcode / * - ProjectTestSGroup / *
Et puis dans votre .travis.yml
, circle.yml
(ou après les commandes de test dans d'autres fournisseurs de CI), appelez slather
après une construction réussie:
# .travis.ymlbefore_install: RVM Utilisez $ RVM_RUBY_VERSIONInstall: Bundle Install --without = Documentation --path ../travis_bundle_dirafter_success: - Scather - bash <(curl -s https://codecov.io/bash) -f path / to / xml_report / cobertura.xml -x couverture -x -x gcov -x xcode
# Circle.ymltest: Post: - Bundle Exec Slather- BASH <(curl -s https://codecov.io/bash) -f path / to / xml_report / cobertura.xml -x couvertureypy -x gcov -x xcode
Repo privé? Add
-t :uuid-repo-token
au téléchargeur Codecov. En savoir plus sur le rapport de téléchargement sur codecov ici
Connectez-vous pour couvrir et activer votre référentiel. À l'heure actuelle, slather
prend en charge les couvertures via Travis CI, Circleci, Jenkins, TeamCity, BuildKite et Bitrise.
Faites un fichier .slather.yml
et spécifiez le service CI que vous utilisez:
# .slather.ymlci_service: circleci | Travis_ci | Travis_pro | Jenkins | BuildKite | TeamCityCoverage_Service: CoverAllSxCodeProj: path / to / project.xcodeprojscheme: yourXcodeschememeNameignore: - ExemplePodcode / * - ProjectTestSGroup / *
Et puis dans votre .travis.yml
ou circle.yml
ou github-action.yml
, appelez slather
après une construction réussie:
# .travis.ymlbefore_install: RVM Utilisez $ RVM_RUBY_VERSIONInstall: Installation du bundle --without = Documentation - Path ../travis_bundle_dirafter_success: Slather
# Circle.ymltest: Post: - Fonctionnement du paquet
# github-action.yml MyJob: étapes: - Run: | Bundle Config Path Path / Bundle Bundle Install - without = Documentation --Jobs 4 --retry 3 - Nom: Extract Branch Nameshell: Bashrun: echo "## [Set-Output Name = Branch;] $ (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}} couverture_ccess_token: $ {{secrets. Github_token}}
Pour utiliser des couvertures avec Travis CI Pro (pour des références privées), ajoutez les lignes suivantes ainsi que d'autres paramètres sur .slather.yml
:
# .slather.ymlci_service: travis_procoverage_access_token: <votre jeton d'accès>
Le jeton de couverture peut être trouvé sur la page CoverAlls Repo. Ou il peut être passé via l'environnement COVERAGE_ACCESS_TOKEN
var.
Pour créer un rapport Cobertura XML définir cobertura_xml
comme service de couverture à l'intérieur de votre .slather.yml
. En éventuellement, vous pouvez définir un répertoire de sortie pour le rapport XML:
# .slather.ymlcoverage_service: cobertura_xmlxcodeproj: path / to / project.xcodeprojscheme: yourXcodeschemeNamesource_Directory: path / to / sources / to / to / uutoutput_directory: path / to / xml_reportgnicore: - ExemplePodcode / * - ProjectTestSGroup / *
Ou utilisez les options de ligne de commande --cobertura-xml
ou -x
et --output-directory
:
$ Slather Coverage -X - TAMENT DE DIRECTOIRE / TO / TO / XML_REPORT
Pour créer un rapport sous forme de pages HTML statiques, utilisez les options de ligne de commande --html
:
$ Slather Coverage --html --Scheme YourXcodescheMename Path / To / project.xcodeproj
Cela fera un répertoire nommé html
dans votre répertoire racine (sauf si --output-directory
est spécifié) et générera tous les rapports sous forme de pages HTML statiques à l'intérieur du répertoire. Il imprimera le chemin du rapport par défaut, mais vous pouvez également spécifier --show
Flag pour l'ouvrir automatiquement dans votre navigateur.
Par défaut, le HTML généré référencera les actifs hébergés localement (JS, CSS). Vous pouvez spécifier les --cdn-assets
pour spécifier que vous préférez que le HTML généré utilise des actifs hébergés en externe. Cela peut être utile si la publication du fichier HTML en tant qu'artefact de construction.
Pour signaler les statistiques de couverture à TeamCity:
$ Slather Coverage --TeamCity -S - Scheme YourXcodeschemename
Si vous essayez de calculer la couverture du code qui a été incluse via Cocoapods, vous devrez dire aux cocoapodes d'utiliser le plugin Slather en ajoutant ce qui suit à votre Podfile
.
Plugin 'Slather'
Vous devrez également dire à Slather où trouver les fichiers source de votre pod.
# .slather.ymlsource_directory: pods / afnetworking
Slather recherchera les fichiers de couverture de test dans DerivedData
par défaut. Si vous envoyez une sortie de construction à un emplacement personnalisé, comme ceci, vous devez également définir la propriété build_directory
dans .slather.yml
Incluez l'argument --workspace
ou ajoutez workspace
à .slather.yml
si vous créez votre projet dans un espace de travail. Par exemple:
$ Slather Coverage --html --Scheme YourXcodeschememeName --workspace Path / To / Workspace.xcWorkspace Path / To / project.xcodeproj
Nous aimerions voir vos idées pour améliorer cette bibliothèque! La meilleure façon de contribuer est de soumettre une demande de traction. Nous ferons de notre mieux pour répondre à votre patch dès que possible. Vous pouvez également soumettre un nouveau problème GitHub si vous trouvez des bogues ou si vous avez des questions.
Veuillez vous assurer de suivre notre style de codage général et d'ajouter une couverture de test pour les nouvelles fonctionnalités!
@tpoulos, le logo parfait.
@ayanonagon et @kylef, commentaires et tests.
@jhersh, support Circleci.
@Tarbrain, Cobertura Support et BugFixing.
@ikhsan, support HTML.
@ Martin-Key et @troyfontaine, GitHub Actions Support.