Generación de files gcda para ver el código de cobertura de XCTests en IOS con Jenkins

Quiero ver la cobertura del código ejecutando gcovr en los files gcda generados. Jenkins parece colocar los files gcda generados en Usuarios /../ Biblioteca / desarrollador / Xcode / DerivedData /../../../ i386. Espero que estén en Usuarios / Shanetworking / Jenkins / workspace /../ build / example.build / Debug-iphonesimulator / example.build / Objects-normal / i386

Cuando ejecuto mi proyecto IOS con XCode localmente, genera files gcda y puedo ver mi cobertura. Estoy ejecutando xcode 5 y todas las testings se crean con XCTest.

He configurado 'Generar files de cobertura de testing = SÍ' y 'Flujo del progtwig de instrumentos = SÍ' para depurar y liberar, básicamente he hecho todo de acuerdo con esta publicación

En Jenkins utilizo el complemento xcode para comstackr. Tiene dos commands de compilation. El primero se construye con el "ejemplo" de destino y la debugging de configuration. El segundo command de compilation de Xcode se comstack con el objective "EjemploPruebas", debugging de configuration, arguments "testing -destinación OS = 7.0, nombre =" iPhone Retina (4 pulgadas) "y un esquema. En la salida puedo ver la testing que se está ejecutando y el simulador comienza en el edificio.

Parece que me he perdido algo tal vez en la configuration del proyecto o no he establecido algo justo en el trabajo de Jenkins. Tal vez algo así como TEST_AFTER_BUILD = YES solo entonces para XCode5.

Como reconoció, los files .gcda se colocan en el directory "incorrecto".

Haz lo siguiente:

  1. Seleccione su objective de aplicación en su Xcode-Project y vaya a "Editor -> Agregar fase de compilation -> Agregar ejecución de secuencia de compilation de secuencias de commands"
  2. Pegue esta secuencia de commands en el campo de secuencia de commands:

    echo "Creating derivedDataDirectory file" echo "${OBJECT_FILE_DIR_normal}/${CURRENT_ARCH}" > ${PROJECT_DIR}/derivedDataDirectory 

    Configuración XCode

    (Esto crea un file con la ruta de acceso a derivedDataDirectory)

  3. Vaya a su proyecto jenkins, click "Agregar paso de compilation" y select "Ejecutar shell".

  4. Pegue esta secuencia de commands en el campo "Comando":

     #CopyCodeCoverageFile echo "Start copying code coverage Files" projectname="[YOUR PROJECTNAME]" source=$(cat ${WORKSPACE}/$projectname/derivedDataDirectory) cp -a $source/. ${WORKSPACE}/$projectname/ #CodeCoverage echo "Start CodeCoverage" cd ${WORKSPACE}/$projectname [YOUR PATH TO GCOVR]/gcovr -r /private/tmp/workspace/${JOB_NAME}/$projectname --xml > ${WORKSPACE}/$projectname/test-reports/coverage.xml 

    Inserta [TU PROYECTO NOMBRE] y [TU RUTA A GCOVR]. ¡Si su PROJECTNAME o destino tiene espacios en él, esto causará problemas! ¡Asegúrate de que todos los paths sean correctos!

  5. Esto funciona para mí y si todos tus paths son correctos, debería funcionar para ti. Estoy ejecutando XCTests en Jenkins utilizando XCode 5. Esto debería ser el mismo que su configuration. Si no usa gcovr para generar cobertura de código para cobertura, puede eliminar el último paso del script. ¡Si tiene problemas con gvovr, intente usar gcovr 3.0 en lugar de 3.1!

¡Dime si algo no funciona para ti o si encontraste una solución mejor!

Intereting Posts