Mi proyecto de Xcode es muy grande, en términos de cantidad de archivos fuente y líneas de código. Cuando hago un cambio solo en el código XCTest y presiono ejecutar en una sola prueba, un solo archivo de prueba, o incluso todo el conjunto de pruebas, Xcode vuelve a compilar mi aplicación de host primero, incluso si ningún archivo ha cambiado en la aplicación de host . Lo hace cada vez que realizo algún cambio en cualquier archivo de prueba.

Esto plantea un desafío de eficiencia con la escritura de pruebas, porque los pequeños ajustes en el código de prueba toman mucho tiempo para volver a ejecutar y validar. (más de 3 minutos por ejecución, sí, es un proyecto tan grande, y ya estamos tomando muchos pasos para reducir el tiempo de compilación, inspeccionando los registros de compilación, etc.)

Usando Xcode 10.3 con Swift 4.2

Las pruebas están usando:

@testable import MyModuleName

¿Hay alguna manera de evitar que Xcode reconstruya todo el proyecto, si solo he cambiado las pruebas?

2
FranticRock 25 sep. 2019 a las 18:00

1 respuesta

La mejor respuesta

Encontré el problema.

Tenemos algunos scripts personalizados en la sección Fases de compilación del proyecto que realmente cambian algunos de los activos compilables en el código base. También tenemos una etapa de copia de dependencia de Carthage.

Al comentar estas dos etapas de las fases de compilación, no se vuelve a compilar todo el proyecto cuando solo se cambian las pruebas. Estos scripts en realidad estaban realizando cambios en el código compilable, haciendo que XCode forzara la recompilación.

Moraleja de la historia: Verifique sus fases de compilación para ver si hay pasos que podrían modificar su código fuente, incluidos posiblemente los archivos de recursos que son parte del objetivo. Intentaremos hacer esto de una manera más automatizada en el futuro, sin tener que comentar estos pasos de compilación.

0
FranticRock 16 oct. 2019 a las 14:15