Gere relatórios de cobertura de teste para projetos Xcode e conecte -os ao CI.
Projeto | Cobertura |
---|---|
Parsimmon | |
Vencore | |
Dazabtest | |
Tbstatemachine |
Adicione esta linha ao GemFile do seu aplicativo:
Gem 'Slather'
E depois execute:
$ pacote
Ou instale a gema:
Gem Instale Slather
Habilite a cobertura do teste marcando a caixa de seleção "Gather Cobertura Data" ao editar um esquema:
Para verificar você está pronto para gerar cobertura de teste, execute seu conjunto de testes em seu projeto e execute:
$ slather cobertura --s -scheme yourxcodeschemename path/to/Project.xcodeproj
Se você usar um espaço de trabalho no Xcode, precisará especificá -lo:
$ slather cobertura --s -scheme yourxcodeschemename -workspace path/to/workspace.xcworkspace path/to/project.xcodeproj
Se você usar uma configuração diferente para seus testes:
$ slather cobertura --s -scheme yourxcodeschemename -Configuração YourbuildConfigurationName Path/to/Project.xcodeproj
Se sua configuração produzir um binário universal, você precisará especificar uma arquitetura específica para usar:
$ slather cobertura --s --arch x86_64 - -scheme yourxcodeschemename -Configuração YourBuildConfigurationName Path/to/Project.xcodeproj
Se você deseja executar alguns módulos, mas não todos (como módulos criados por Cocoapods), você pode fazer assim:
$ slather cobertura-módulo binário-basename1-binário-basename module2 path/to/project.xcodeproj
Você também pode adicioná -lo ao arquivo .slather.yml
como uma matriz:
binário_basename: - Módulo1 - Módulo2
Execute este comando para ativar a Generate Test Coverage
e os bandeiras Instrument Program Flow
para o seu projeto:
$ slather setup path/to/Project.xcodeproj
Ao usar um arquivo de configuração ( .slather.yml
) e fornecer argumentos através do comando linha, os argumentos terão precedência sobre a configuração correspondente no arquivo de configuração.
ignore
sempre vence sobre source-files
Ao definir ambos os arquivos que devem ser ignorados ( --ignore
, ignorar) e arquivos de origem a incluir ( --source-files
, fonte_files), a lista de ignorar é verificada primeiro. Se o arquivo que está sendo digitalizado corresponder a um glob na lista de ignorados, ele não será incluído. Nesse caso, a lista de origem_file não é verificada.
Se o arquivo que está sendo digitalizado não estiver na lista de ignorados e a fonte do fonte foi definida, a lista de origem_file será verificada. Se o arquivo de origem corresponder a um glob, ele será incluído.
Faça login no codecov (não é necessário ativar um repositório, isso acontece automaticamente). No momento, slather
suporta o CodeCov por todos os provedores de IC suportados listados aqui.
Faça um arquivo .slather.yml
:
# .lather.ymlcoverage_service: cobertua_xmlxcodeproj: path/to/project.xcodeprojscheme: yourxcodeschemenameConfiguration: testedconfigurationsource_directory:/para/fontes/to/to/toutput_directory Path to Path to:/FOURS/TO/TO/IBSTUPT_DIRECTORIO - ExpletPodCode/* - ProjectTestsGroup/*
E então, em seu .travis.yml
, circle.yml
(ou após comandos de teste em outros provedores de IC), ligue para slather
após uma compilação bem -sucedida:
# .travis.ymlbefore_install: rvm use $ rvm_ruby_versioninstall: pacote install ---without = documentação ----path ../travis_bundle_dirafter_success: - Slather -Bash <(Curl -s https://codecov.io/bash) -f Path/para/xml_report/cobertura.xml -x coberturapy -x gcov -x xcode
# círculo.ymltest: post: -Bundle Exec Slather- Bash <(Curl -s https://codecov.io/bash) -f Path/para/xml_report/cobertura.xml -x coberturapy -x gcov -x xcode
Repo privado? Adicionar
-t :uuid-repo-token
ao uploader CodeCov. Leia mais sobre o upload do relatório para o Codecov aqui
Faça login no CoverAlls e ative seu repositório. No momento, slather
suporta Coveralls via Travis CI, Circleci, Jenkins, Teamcity, Buildkite e Bitrise.
Faça um arquivo .slather.yml
e especifique o serviço CI que você está usando:
# .lather.ymlci_service: Circleci | travis_ci | travis_pro | Jenkins | BuildKite | TeamCityCoverage_Service: CoverAllSxCodeProj: path/to/Project.xcodeprojscheme: yourxcodeschemenameignore: - ExpletPodCode/* - ProjectTestsGroup/*
E então em seu .travis.yml
ou circle.yml
ou github-action.yml
, ligue slather
após uma construção bem-sucedida:
# .travis.ymlbefore_install: rvm use $ rvm_ruby_versioninstall: pacote install ---without = documentação ----path ../travis_bundle_dirafter_success: slather
# círculo.ymltest: post: - pacote Exec Slather
# github-action.yml MyJob: Passos: - Execute: | Bundle Config Path Vendor/Bundle Bundle Install - -Without = Documentação --Jobs 4 -R -Retria 3 -Nome: Extrair ramo Nameshell: Bashrun: Echo "## [Nome do Set -Output = Branch;] $ (echo $ {github_ref# Refs/Heads/}) "Id: get_branch - Run: pacote Exec slatherenv: git_branch: $ {{steps.get_branch.outputs.branch}} Ci_pull_request: $ {{github.event.number}}}}}. Github_token}}
Para usar o CoverAlls com o Travis Ci Pro (para repositórios privados), adicione as seguintes linhas junto com outras configurações ao .slather.yml
:
# .lather.ymlci_service: travis_procoverage_access_token: <seu token de acesso>
O token de cobertura pode ser encontrado na página de repositório de Coveralls. Ou pode ser passado através do ambiente COVERAGE_ACCESS_TOKEN
var.
Para criar um relatório Cobertura XML Defina cobertura_xml
como serviço de cobertura dentro do seu .slather.yml
. Opcionalmente, você pode definir um diretório de saída para o relatório XML:
# .slather.ymlcoverage_service: cobertua_xmlxcodeproj: path/to/project.xcodeprojscheme: yourxcodeschemenamesource_directory: path/para/fontes/to/incluioutput_directory: path/to/xml_reportignore: - ExpletPodCode/* - ProjectTestsGroup/*
Ou use as opções da linha de comando --cobertura-xml
ou -x
e --output-directory
:
$ slather cobertura -x -output -diretor caminho/para/xml_report
Para criar um relatório como páginas HTML estáticas, use as opções da linha de comando --html
:
$ slather cobertura - -html - -scheme yourxcodeschemename path/to/Project.xcodeproj
Isso fará um diretório chamado html
no seu diretório raiz (a menos que seja especificado --output-directory
) e gerará todos os relatórios como páginas HTML estáticas dentro do diretório. Ele imprimirá o caminho do relatório por padrão, mas você também poderá especificar --show
Flag para abri -lo no seu navegador automaticamente.
Por padrão, o HTML gerado referenciará ativos hospedados localmente (JS, CSS). Você pode especificar os --cdn-assets
para especificar que você prefere que o HTML gerado use ativos hospedados externamente. Isso pode ser útil se a publicação do arquivo HTML como um artefato de compilação.
Para relatar as estatísticas de cobertura ao TeamCity:
$ Slather Cobertura -Teamcity --S -Scheme YourxCodesChemename
Se você estiver tentando calcular a cobertura do código que foi incluído via Cocoapods, precisará dizer aos Cocoapods para usar o plug -in de Slather, adicionando o seguinte ao seu Podfile
.
plugin 'slather'
Você também precisará dizer a Slather onde encontrar os arquivos de origem para o seu pod.
# .lather.ymlsource_directory: pods/Afnetworking
Slather procurará os arquivos de cobertura de teste em DerivedData
por padrão. Se você enviar a saída do Build para um local personalizado, como este, também deverá definir a propriedade build_directory
em .slather.yml
Inclua o argumento --workspace
ou adicione workspace
ao .slather.yml
se você criar seu projeto em um espaço de trabalho. Por exemplo:
$ slather cobertura - -html - -scheme yourxcodeschemename -workspace path/to/workspace.xcworkspace path/to/project.xcodeproj
Adoraríamos ver suas idéias para melhorar esta biblioteca! A melhor maneira de contribuir é enviando uma solicitação de tração. Faremos o possível para responder ao seu patch o mais rápido possível. Você também pode enviar um novo problema do GitHub se encontrar bugs ou tiver dúvidas.
Certifique -se de seguir nosso estilo de codificação geral e adicione cobertura de teste para novos recursos!
@tpoulos, o logotipo perfeito.
@ayanonagon e @kylef, feedback e teste.
@jhersh, suporte Circleci.
@tarbrain, suporte e bugs de cobertuas.
@ikhsan, suporte HTML.
@Martin-Key e @Troyfontaine, o suporte de ações do GitHub.