Tengo un problema y quería confirmar que estoy haciendo las cosas correctamente.Xcode Unit Testing - ¿Cómo acceder a los recursos desde el paquete de la aplicación?
Puedo probar cosas simples con mis pruebas SenTestingKit, y eso funciona bien. Configuré un paquete de prueba de unidades y lo configuré como una dependencia del objetivo principal de la aplicación. Ejecuta con éxito todas las pruebas cada vez que presiono cmd + B.
Aquí es donde me encuentro con problemas. Tengo algunos archivos XML que necesito cargar desde la carpeta de recursos como parte de la aplicación. Como soy un buen probador de unidades, quiero escribir pruebas unitarias para asegurarse de que se están cargando correctamente.
Así que tienen un código que se parece a esto:
NSString *filePath = [[NSBundle mainBundle]
pathForResource:@"foo" ofType:@"xml"];
Esto funciona cuando se ejecuta la aplicación, pero durante una prueba de unidad, mainBundle
apunta al paquete equivocado, por lo que esta línea de código devuelve nil.
así que lo cambié a utilizar una clase conocida como esto:
NSString *filePath = [[NSBundle bundleForClass:[Config class]]
pathForResource:@"foo" ofType:@"xml"];
Esto no funciona bien, porque para que la prueba incluso a compilar el código como este, es Config
necesita ser parte del objetivo de prueba de la unidad. Si agrego eso, entonces el paquete para esa clase se convierte en el paquete de Prueba de Unidad. (¡Uf!)
¿Me estoy acercando a esto de la manera incorrecta?
Intenta construirlo y luego ejecuta las pruebas. Vi un video de iTunes U sobre esto y me dijeron que si el objetivo de la prueba no estaba configurado correctamente, se probaría en la última compilación cuando se ejecutara en lugar de construir y luego ejecutar las pruebas. ¿Ha comprobado para asegurarse de que no es el caso? – Tacoman667
¿Intenta crear el proyecto de prueba de unidad? Parte del paquete de prueba de la unidad es ejecutar los scripts, por lo que lo configuro como una dependencia del objetivo de mi aplicación. CMD + B siempre debe ejecutar pruebas. –