Genere informes de cobertura de prueba para proyectos de Xcode y conéctelo en CI.
Proyecto | Cobertura |
---|---|
Parsimmón | |
Vencore | |
Dazabtest | |
Tbstatemachine |
Agregue esta línea al archivo gem de su aplicación:
Gema 'Slather'
Y luego ejecutar:
$ Bundle
O instalar la gema:
Instalar en gemas Slather
Habilite la cobertura de prueba marcando la casilla de verificación "Recopilar datos de cobertura" al editar un esquema:
Para verificar que esté listo para generar cobertura de prueba, ejecute su conjunto de pruebas en su proyecto y luego ejecute:
$ Slather Cobertura -S -Scheme YourxCodesChemename ruta/a/proyecto.xCodeproj
Si usa un espacio de trabajo en Xcode, debe especificarlo:
$ Slather Cobertura -S -Scheme YourxCodeschemename --Workspace Path/To/Workspace.xcworkspace Path/to/Project.xCodeproj
Si usa una configuración diferente para sus pruebas:
$ Slather Cobertura -S -Scheme YourxCodeschemename -Configuración YourBuildConfigurationName Path/To/Project.xCodeproj
Si su configuración produce un binario universal, debe especificar una arquitectura específica para usar:
$ SLATHER COBERTA -S --Arch x86_64 --scheme yourxcodeschemename - -Configuration YourBuildConfigurationName ruta/a/proyecto.xCodeProj
Si desea ejecutar algunos módulos, pero no todos (como módulos creados por Cocoapods), puede hacerlo así:
$ Slather Cobertura-Binary-Basename Module1-Binary-Basename Module2 ruta/a/proyecto.xcodeproj
También puede agregarlo al archivo .slather.yml
como una matriz:
binary_basename: - Módulo1 - Módulo2
Ejecute este comando para habilitar la Generate Test Coverage
banderas Instrument Program Flow
para su proyecto:
$ Slather Setup Rath/a/proyecto.xCodeproj
Al usar un archivo de configuración ( .slather.yml
) y proporcionar argumentos a través de la línea de comandos, los argumentos tendrán prioridad sobre la configuración coincidente en el archivo de configuración.
ignore
siempre gana sobre source-files
Al definir ambos archivos que deben ignorarse ( --ignore
, ignorar) y los archivos de origen para incluir ( --source-files
, Source_Files), la lista Ignore se verifica primero. Si el archivo que se escanea coincide con un globo en la lista Ignore, no se incluirá. En este caso, la lista Source_File no está marcada.
Si el archivo que se está escaneando no está en la lista Ignore, y se ha definido Source_File, se verifica la lista Source_File. Si el archivo fuente coincide con un globo, se incluirá.
Inicie sesión en CodeCov (no es necesario activar un repositorio, esto sucede automáticamente). En este momento, slather
admite CodeCov a través de todos los proveedores de CI compatibles que figuran aquí.
Haga un archivo .slather.yml
:
# .Slather.ymlCoverage_Service: COBERTURA_XMLXCODEPROJ: ruta/a/proyecto.xCodeproJsCheme: YourxCodeschemenameconfiguration: TestedConfigurationSource_Directory: ruta/to/fuentes/to/incluido_directory: ruta/to/xml_reportignore: - EjemploPodCode/* - ProjectTsgroup/*
Y luego en su .travis.yml
, circle.yml
(o después de los comandos de prueba en otros proveedores de CI), llame slather
después de una construcción exitosa:
# .travis.ymlbefore_install: rvm use $ rvm_ruby_versionInstall: bundle install -without = documentation --path ../travis_bundle_dirafter_success:: - Slather -bash <(curl -s https://codecov.io/bash) -f ruta/a/xml_report/cobertura.xml -x CoveragePy -x GCov -x xcode
# Circle.ymlTest: Publicar: -Bundle Exec Slather- Bash <(curl -s https://codecov.io/bash) -f ruta/a/xml_report/Cobertura.xml -x CoveragePy -X GCOV -X Xcode
¿Repo privado? Agregar
-t :uuid-repo-token
con el cargador CodeCoV. Lea más sobre cómo cargar el informe a CodeCov aquí
Inicie sesión para cubrir y habilite su repositorio. En este momento, slather
admite Coveralls a través de Travis CI, Circleci, Jenkins, TeamCity, Buildkite y Bitrise.
Haga un archivo .slather.yml
y especifique el servicio CI que está utilizando:
# .Slather.ymlci_Service: Circleci | Travis_ci | Travis_Pro | Jenkins | Buildkite | TeamCityCoverage_Service: CoverAllSXCodeproj: Path/To/Project.xCodeproJSCheme: YourxCodeschemenEnmeignore: - EjemploPodCode/* - ProjectTsgroup/*
Y luego, en su .travis.yml
o circle.yml
o github-action.yml
, llame slather
después de una construcción exitosa:
# .travis.ymlbefore_install: rvm use $ rvm_ruby_versionInstall: bundle install --without = documentation --path ../travis_bundle_dirafter_success: slather
# Circle.ymlTest: Publicar: - Bundle Exec Slather
# github-action.yml MyJob: Pasos: - Run: | Bundle Config Rath Vendor/Bundle Bundle Instalar --without = Documentation -Jobs 4 - -Retry 3 -Nombre: Extraer Branch Nameshell: Bashrun: Echo "## [SET -Output Name = Branch;] $ (echo $ {github_ref# Refs/Heads/}) "Id: get_branch - run: bundle ejecut slatherenv: git_branch: $ {{steps.get_branch.outputs.branch}} ci_pull_request: $ {{github.event.number}} cobertura_access_token: $ {{{{{secrets. Github_token}}
Para usar Coverls con Travis CI Pro (para repositorios privados), agregue las siguientes líneas junto con otras configuraciones a .slather.yml
:
# .Slather.ymlci_Service: Travis_ProCoverage_Access_Token: <Su token de acceso>
El token de cobertura se puede encontrar en la página de repositorio de Coverls. O se puede pasar a través de la COVERAGE_ACCESS_TOKEN
ambiente var.
Para crear un informe de Cobertura XML, conjunto cobertura_xml
como servicio de cobertura dentro de su .slather.yml
. Opcionalmente, puede definir un directorio de salida para el informe XML:
# .Slather.ymlCoverage_Service: COBERTURA_XMLXCODEPROJ: ruta/a/proyecto.xCodeproJscheme: YourxCodeschemenamesource_directory: ruta/a/fuentes/a/includeOutput_directory: ruta/a/xml_reportignore:: - EjemploPodCode/* - ProjectTsgroup/*
O use las opciones de línea de comando --cobertura-xml
o -x
y --output-directory
:
$ Slather Cobertura -x -Output -Directory Rath/TO/XML_REPORT
Para crear un informe como páginas HTML estáticas, use las opciones de línea de comando --html
:
$ Slather Cobertura --html --scheme YourxCodeschemename ruta/a/proyecto.xcodeproj
Esto hará un directorio llamado html
en su directorio raíz (a menos que se especifique --output-directory
) y generará todos los informes como páginas HTML estáticas dentro del directorio. Imprimirá la ruta del informe de forma predeterminada, pero también puede especificar --show
el indicador para abrirla en su navegador automáticamente.
Por defecto, el HTML generado hará referencia a los activos alojados localmente (JS, CSS). Puede especificar los --cdn-assets
para especificar que prefiere para el HTML generado para usar activos alojados externamente. Esto puede ser útil si publica el archivo HTML como un artefacto de compilación.
Para informar las estadísticas de cobertura a TeamCity:
$ Slather Cobertura -Teamcity -S -Scheme YourxCodeschemename
Si está tratando de calcular la cobertura del código que se ha incluido a través de Cocoapods, deberá decirle a Cocoapods que use el complemento Slather agregando lo siguiente a su Podfile
.
plugin 'estallar'
También deberá decirle a Slather dónde encontrar los archivos de origen para su POD.
# .slather.ymlsource_directory: pods/afnetworking
Slather buscará los archivos de cobertura de prueba en DerivedData
de forma predeterminada. Si envía la salida de compilación a una ubicación personalizada, así, entonces también debe establecer la propiedad build_directory
en .slather.yml
Incluya el argumento --workspace
o agregue workspace
a .slather.yml
si construye su proyecto en un espacio de trabajo. Por ejemplo:
$ Slather Cobertura --html --scheme Yourxcodeschemename --workspace ruta/a/workspace.xcworkspace ruta/a/proyecto.xcodeproj
¡Nos encantaría ver sus ideas para mejorar esta biblioteca! La mejor manera de contribuir es enviando una solicitud de extracción. Haremos todo lo posible para responder a su parche lo antes posible. También puede enviar un nuevo problema de GitHub si encuentra errores o tiene preguntas.
¡Asegúrese de seguir nuestro estilo de codificación general y agregar cobertura de prueba para nuevas funciones!
@tpoulos, el logotipo perfecto.
@Ayanonagon y @kylef, comentarios y pruebas.
@JHERSH, Circleci Support.
@Tarbrain, soporte de Cobertura y interrupción de errores.
@ikhsan, soporte HTML.
@Martin-Key y @TroyFontaine, GitHub Actions Support.