Generieren Sie Berichte zur Testabdeckung für Xcode -Projekte und schalten Sie sie an CI an.
Projekt | Berichterstattung |
---|---|
Parsimmon | |
Vencore | |
Dazabtest | |
Tbstatemachine |
Fügen Sie diese Zeile der GemFile Ihrer Anwendung hinzu:
Juwel "Slather"
Und dann ausführen:
$ Bundle
Oder installieren Sie das Edelstein:
Gem -installieren Slather
Aktivieren Sie die Testabdeckung, indem Sie das Kontrollkästchen "Abdeckungsdaten sammeln" beim Bearbeiten eines Schemas ankreuzen:
Um zu überprüfen, ob Sie bereit sind, die Testabdeckung zu erstellen, führen Sie Ihre Testsuite in Ihrem Projekt aus und führen Sie dann aus:
$ Slather Coverage -S --Scheme yourxcodeSchemename Pfad/to/project.xcodeProj
Wenn Sie einen Arbeitsbereich in Xcode verwenden, müssen Sie ihn angeben:
$ Slather Coverage -S --Scheme yourxcodeSchemeName --Workspace -Pfad/to/workspace.xcworkspace path/to/project.xcodeProj
Wenn Sie eine andere Konfiguration für Ihre Tests verwenden:
$ Slather Coverage -S --Scheme YourxCodeSchemeName -Konfiguration YourBuildConfigurationName Pfad/to/project.xcodeProj
Wenn Ihre Konfiguration eine universelle Binärdatum erzeugt, müssen Sie eine bestimmte Architektur angeben:
$ Slather Coverage -S --arch x86_64 --Scheme yourxcodeSchemeName -Konfiguration YourBuildConfigurationName Pfad/to/project.xcodeProj
Wenn Sie einige Module ausführen möchten, aber nicht alle (wie von Cocoapods erstellte Module), können Sie es so tun:
$ Slather Coverage-Binär-Assine-Namen-Modul1-Basis-ANAMEMED MODUL2 PATH/TO/PROJEKT.XCODEPROJ
Sie können es auch als Array zur Datei .slather.yml
hinzufügen:
binary_basename: - Modul1 - Modul2
Führen Sie diesen Befehl aus, um die Flaggen für Ihr Projekt zu erzeugen Generate Test Coverage
und Instrument Program Flow
für Ihr Projekt generieren:
$ Slather Setup Path/to/project.xcodeProj
Bei Verwendung einer Konfigurationsdatei ( .slather.yml
) und der Bereitstellung von Argumenten über die Befehlszeile haben die Argumente Vorrang vor der Übereinstimmungseinstellung in der Konfigurationsdatei.
ignore
immer gewinnt über source-files
Wenn Sie beide Dateien definieren, die ignoriert werden sollten ( --ignore
, Ignorieren) und Quelldateien, die ( --source-files
, Source_files) enthalten sind, wird die Liste Ignores zuerst überprüft. Wenn die gescannte Datei in der Liste der Ignorierung mit einer GLOB übereinstimmt, wird sie nicht enthalten. In diesem Fall wird die Liste Source_File nicht überprüft.
Wenn sich die scannte Datei nicht in der Liste ignorieren und Source_file definiert wurde, wird die Liste von Source_file überprüft. Wenn die Quelldatei mit einer GLOB übereinstimmt, wird sie enthalten.
Melden Sie sich bei CodeCOV an (kein Repository aktiviert, dies geschieht automatisch). Derzeit unterstützt slather
Codecov über alle unterstützten CI -Anbieter, die hier aufgeführt sind.
Erstellen Sie eine .slather.yml
-Datei:
# .Slather.ymlcoverage_Service: cobertura_xmlxCodeProj: Path/to/project.xcodeProjScheme: yourxcodeschemenameConfiguration: testedConFigurationsOurce_Directory: Path/to/Quellen/TO/INCLECTION_DREITRECTORTORY/TO/TO/XML_REPORTORS: - BeispielPodcode/* - ProjectTestSGroup/*
Und dann in Ihrem .travis.yml
, circle.yml
(oder nach Testbefehls in anderen CI -Anbietern), rufen Sie slather
nach einem erfolgreichen Build an:
Nr. - Slather .
# Circle.ymltest: Post: -Bundle Exec Slather- Bash <(curl -s https://codecov.io/bash) -f Path/to/xml_report/cobertura.xml -x Coveragepy -x GCOV -x Xcode
Privates Repo? Fügen Sie
-t :uuid-repo-token
zum Codecov-Uploader. Weitere Informationen zum Hochladen von Bericht in Codecov finden Sie hier
Melden Sie sich bei Coveralls an und aktivieren Sie Ihr Repository. Im Moment unterstützt slather
Coveralls über Travis CI, Circleci, Jenkins, Teamcity, Buildkite und Bitrise.
Erstellen Sie eine .slather.yml
-Datei und geben Sie den CI -Dienst an, den Sie verwenden:
# .Slather.ymlci_Service: Circleci | Travis_ci | Travis_Pro | Jenkins | Buildkite | TeamCityCoverage_Service: CoverAllSXCodeProj: Path/to/project.xcodeProjScheme: yourxcodeSchemeNamesignore: - BeispielPodcode/* - ProjectTestSgroup/*
Und dann in Ihrem .travis.yml
oder circle.yml
oder github-action.yml
slather
nach einem erfolgreichen Build:
# .Travis.ymlbefore_install: RVM Verwenden
# Circle.ymltest: Post: - Bündel Slather
# github-action.yml Myjob: Schritte: - Run: | Bündel -Konfigurationspfad -Anbieter/Bundle -Bundle Installation --without = Dokumentation -JOBS 4 - -Retry 3 -Name: Extrahieren Sie 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 }} COVERAGE_ACCESS_TOKEN: ${{ secrets. Github_token}}
Um Coveralls mit Travis CI Pro (für private Repos) zu verwenden, fügen Sie den folgenden Zeilen zusammen mit anderen Einstellungen zu .slather.yml
hinzu:
# .Slather.ymlci_Service: travis_procoverage_access_token: <Ihr Zugriffs -Token>
Das Deckungs -Token finden Sie auf der Coveralls Repo -Seite. Oder es kann über die Umgebung von COVERAGE_ACCESS_TOKEN
VAR übergeben werden.
Um einen Cobertura XML -Bericht zu erstellen, setzen Sie cobertura_xml
als Berichterstattungsdienst in Ihrem .slather.yml
. Optional können Sie ein Ausgabeverzeichnis für den XML -Bericht definieren:
# .Slather.ymlcoverage_Service: cobertura_xmlxCodeProj: path/to/project.xcodeProjScheme: yourxcodeSchemeNameSource_Directory: Pfad/to/Quellen/to/inclustput_directory: path/to/xml_reportignore: - BeispielPodcode/* - ProjectTestSGroup/*
Oder verwenden Sie die Befehlszeilenoptionen --cobertura-xml
oder -x
und --output-directory
:
$ Slather Deckung -x -Ausgabe -Verzeichnispfad/to/xml_report
Um einen Bericht als statische HTML -Seiten zu erstellen, verwenden Sie die Befehlszeilenoptionen --html
:
$ Slather Coverage --HTML --Scheme yourxcodeSchemname path/to/project.xcodeProj
Dadurch wird ein Verzeichnis namens html
in Ihrem Stammverzeichnis erstellt (es sei denn, --output-directory
wird angegeben) und generiert alle Berichte als statische HTML-Seiten im Verzeichnis. Es wird standardmäßig den Pfad des Berichts ausdrucken, aber Sie können auch angeben --show
Flag zum Abstellen, um ihn in Ihrem Browser automatisch zu öffnen.
Standardmäßig verweist die generierte HTML lokal gehostete Vermögenswerte (JS, CSS). Sie können die --cdn-assets
angeben, um anzugeben, dass Sie es vorziehen, dass das generierte HTML extern gehostete Vermögenswerte verwendet. Dies kann nützlich sein, wenn die HTML -Datei als Build -Artefakt veröffentlicht wird.
Um die Deckungsstatistik an TeamCity zu melden:
$ Slather Coverage -TEAMCITY -S --Scheme YourxCodeSchemename
Wenn Sie versuchen, die Abdeckung des Codes zu berechnen, der über Cocoapods enthalten ist, müssen Sie Cocoapods mitteilen, dass sie das Slather -Plugin verwenden sollen, indem Sie Folgendes zu Ihrer Podfile
hinzufügen.
Plugin 'Slather'
Sie müssen auch Slather mitteilen, wo Sie die Quelldateien für Ihren Pod finden können.
# .Slather.ymlSource_Directory: Pods/Afnetworking
Slather sucht standardmäßig nach den Testabdeckungsdateien in DerivedData
. Wenn Sie die Build -Ausgabe an einen benutzerdefinierten Ort wie dieses senden, sollten Sie auch die Eigenschaft build_directory
in .slather.yml
einstellen
Fügen Sie das Argument --workspace
ein oder fügen Sie workspace
zu .slather.yml
hinzu, wenn Sie Ihr Projekt in einem Arbeitsbereich erstellen. Zum Beispiel:
$ Slather Coverage --HTML --Scheme yourxCodeSchemeName -Workspace -Pfad/to/workspace.xcWorkspace Path/to/project.xcodeProj
Wir würden gerne Ihre Ideen zur Verbesserung dieser Bibliothek sehen! Der beste Weg, um einen Beitrag zu leisten, besteht darin, eine Pull -Anfrage einzureichen. Wir werden unser Bestes tun, um so schnell wie möglich auf Ihren Patch zu antworten. Sie können auch ein neues Github -Problem einreichen, wenn Sie Fehler finden oder Fragen haben.
Bitte befolgen Sie unseren allgemeinen Codierungsstil und fügen Sie die Testabdeckung für neue Funktionen hinzu!
@tpoulos, das perfekte Logo.
@ayanonagon und @kylef, Feedback und Tests.
@jhersh, Circleci -Unterstützung.
@tarbrain, Cobertura Support und Bugfixing.
@ikhsan, HTML -Unterstützung.
@Martin-Key und @Troyfontaine, GitHub Actions Support.