tab human guidelines bars bar ios objective-c xcode7 ui-testing xcode-ui-testing

human - tab bars ios



Conexión del marco externo al objetivo de prueba de la unidad de UI, iOS (1)

Por lo tanto, ya tengo el proyecto en mis manos y estoy tratando de crear algunas pruebas de UI utilizando este nuevo y elegante paquete de pruebas de UI proporcionado por Apple. El problema es que el objetivo de prueba no tiene acceso a ningún marco externo (y necesito hacer alguna configuración con uno de ellos). Agregar marco en las fases de construcción y hacer frente a la ruta de búsqueda de marco desde el objetivo principal no hace nada.

Después de un día de navegación descubrí solo una cosa, que "hace que las cosas sean un poco diferentes". Al configurar Bundle Loader y Test Host en $ (BUILT_PRODUCTS_DIR) /App.app/App , todavía no podía importar marcos externos a test.m, pero podía importar clases que lo hagan por sí mismos. Y todo estaría bien y elegante a menos que no rompiera algunas cosas. Al configurar Bundle y Host ahora, mi prueba de IU no puede ejecutar el método de inicio:

[[[XCUIApplication alloc] init] launch];

Se bloquea con el error: Error de aserción : Error de prueba de IU: el estado de la aplicación aún no se ha terminado.

Al final, pude eliminar el método de inicio de la configuración y desencadenar cada prueba de forma manual, por lo que reinicia la aplicación cada vez que se ejecuta, pero esta solución parece muy incorrecta (especialmente para algunos proyectos más grandes). ¿Alguien sabe la forma correcta de manejar este problema?


Lo que he hecho para esto es agregar una variable de entorno a XCUIApplication para especificar que se están ejecutando las pruebas de UI. Luego tengo una comprobación del #DEBUG para #DEBUG en la parte principal de la aplicación y luego #DEBUG si la variable de entorno de test se ha establecido; Si es así, realice los pasos necesarios para las pruebas de interfaz de usuario.

Básicamente, esto le permitirá configurar su aplicación de acuerdo con la forma en que la necesita para que se ejecuten las pruebas de UI. También significa que la verificación del preprocesador eliminará ese código de configuración completamente para la versión de lanzamiento.