Estoy trabajando rápidamente en Xcode y, de forma predeterminada, crea un archivo de prueba que hace referencia a XCTest.
Cuando configuro la membresía de destino para mi proyecto principal, causa este error
No se puede cargar el módulo subyacente para XCTest
Si no se establece esta membresía de destino, las pruebas se ejecutan correctamente y todo funciona bien.
PD: soy nuevo en Swift y probablemente sea una pregunta tonta (por favor, ilumíneme)
Respuestas:
El proyecto principal no se vincula con el marco XCUnit. Debe crear un objetivo de prueba separado para su proyecto, si aún no existe, y agregar sus archivos de origen de prueba a ese objetivo.
Si está trabajando en una plantilla de proyecto de iOS , seleccione
iOS > Test > iOS Unit Testing Bundle
.Si está trabajando en una plantilla de proyecto OS X , seleccione
OS X > Test > OS X Unit Testing Bundle
.fuente
Verifique que el archivo en cuestión no esté en el objetivo principal, sino solo en el objetivo de prueba. Solo el objetivo de prueba tendrá ese marco para importar.
fuente
Acaba de agregar su archivo / clase de pruebas al objetivo principal y no al objetivo de la prueba por error. Simple como eso.
Solución:
1) Elimine el archivo de prueba de la lista "Compilar orígenes" en la pestaña "Fases de compilación" para el objetivo principal
2) Agregue el mismo archivo en "Compilar fuentes" en la pestaña "Fases de compilación" para el objetivo de prueba
Debe resolver el problema.
fuente
Recibo este error si creo un objetivo de marco dinámico de macOS, que se vincula a
XCTest.framework
(¡el objetivo es un objetivo de marco, no un objetivo de prueba!).En este caso, el problema se resuelve agregando
a "Configuración de compilación / Rutas de búsqueda de marco" del proyecto.
fuente
$(PLATFORM_DIR)/Developer/Library/Frameworks
en caso de que tenga instaladas varias versiones de Xcode con diferentes nombres (por ejemplo, versiones de lanzamiento y beta).Después de un montón de solución de problemas y rebotando en las páginas de Stack Overflow como esta, pude encontrar un detalle que no se mencionó en las otras páginas de solución de problemas de iOS Unit Test.
Si su proyecto usa CocoaPods, asegúrese de incluir su objetivo de prueba anidado dentro del objetivo de su aplicación principal. Es posible que su archivo de pod no lo incluya si creó su objetivo de prueba después de ejecutarlo
pod init
. Su podfile debería verse así:Recuerde guardar su archivo de pod y ejecutar
pod install
después de hacerlo.¡Espero eso ayude!
fuente
Tal vez sea un poco tarde, pero lo que tienes que hacer es:
Haga clic en Archivo> Nuevo> Destino> Paquete de prueba de unidad iOS.
Y luego agregue sus pruebas allí. Esto funcionó para mí. El problema fue que no seleccioné crear pruebas unitarias cuando creé mi proyecto. Espero que esto ayude a alguien.
fuente
Este problema ocurre dos veces en su proyecto.
1: respuesta:
Ir al archivo Haga clic en Archivo.
Luego verá Primera opción Nuevo Haga clic en ella.
Después de hacer clic en él, verá Algunas opciones Haga clic en Destino.
Y luego, en la barra de búsqueda, se resuelve el paquete de prueba de unidad de IOS y el problema Agregar.
si el compilador no puede darle permiso para agregar esto, intente con el segundo método cuando se indica a continuación.
2. Responda al problema de CocoaPod:
Ir al producto Haga clic en el producto.
Haga clic en limpiar o presione cmd + k.
El problema está resuelto.
fuente
Si bien la respuesta aceptada resuelve este problema la mayoría de las veces, hay una forma más de encontrar este error.
Si ya te has asegurado de que:
Como lo señalaron @pwc @ nick-ny otros
ClassTest.swift
archivo para la membresía de destino asegurándose de que solo se adjunte al objetivo de prueba.ClassTest.swift
se puede ver debajo del objetivo principal de la aplicación> Generar orígenes> Compilar orígenesEsto es lo que más puede verificar:
en tu
.podspecs
archivoAsegúrese de que su
source_files
no incluye directa o indirectamente el directorio de prueba.por ejemplo :
Tenga en cuenta que
Classes/**/*.{swift}
incluye todo lo que anula el hecho de que el directorioMyPodProjTests
debe ser excluido.Solución:
Nota: Este es un caso extremadamente extremo y un error completamente humano, pero pensé que valdría la pena señalarlo.
fuente
s.source_files
. ¡Gracias!Asegúrese de que la Membresía de destino esté marcada para todos los módulos cuando se seleccione el marco de prueba. Puede ver la opción de Membresía de destino seleccionando Ver-> Utilidades-> Mostrar inspector de archivos
fuente
En mi caso, estaba haciendo las pruebas para un pod privado, por lo que en el podspec era como:
Pero en el Podfile olvidé traer la especificación de prueba, como tal:
fuente
Hice todo lo anterior, pero aún no se me permitió acceder a los métodos que quería probar. Pero antes de escribir cualquier caso de prueba construí el proyecto una vez y luego los métodos fueron accesibles para probar. Así que pruébalo y avísame si resolvió algún problema.
fuente
Tuve el mismo problema y la solución para mí fue:
Espero que esta respuesta ayude.
PD: un último pensamiento en mi objetivo de prueba en la configuración de compilación tuve que verificar estas propiedades que no se configuraron correctamente:
fuente
Justo como @Alfishe mencionó anteriormente:
Tienes que eliminar los archivos de prueba de
Compiler Sources
debajoBuild Phases
Como se muestra abajo
fuente
Verifique la membresía de destino de su clase de prueba.
fuente
El problema es que
Unit Testing Bundle
como objetivo se debe crear de antemano[Cómo agregarlo]
fuente