Adición de files Swift para probar el destino, sin reparar las testings unitarias

He visto muchos blogs y he intentado muchas cosas para que mis testings de unidad Swift funcionen en Xcode 6.0.1 (o 6.1 para ese caso). Estoy intentando acceder a classs en el objective de mi aplicación, así que escribí esta línea:

var vc: LoginViewController! 

Por supuesto, obtengo el error "Uso de tipo no declarado LoginViewController".

Luego bash agregar LoginViewController a mi objective de testing, pero luego obtengo errores de "uso de identificadores no resueltos" en otras classs en mi proyecto. Así que trato de agregar esas classs a mi objective de testing, pero termino con una fuente de errores aparentemente interminable como la siguiente captura de pantalla:

xcode swift errors

Declarar todas mis classs como públicas, causa otros errores y parece una mala práctica. ¿Hay alguna forma de include testings unitarias en un proyecto Swift que se base en muchos frameworks y classs? Simplemente quiero comenzar con algo casi exactamente como el código en este artículo .

Después de mucho dolor de cabeza y poniendo esto en un segundo plano, encontré que el problema principal era cuando se agregaban files a la membresía del objective de testing, las classs de Objective-C todavía se quejaban. Pensé que era un viejo problema de compatibilidad con la nueva forma en que Swift hace testings unitarias, pero la solución fue que mi objective de testing no sabía que había un encabezado de puente . Por lo tanto, agregué una reference a ella en la configuration de compilation del objective de testing, así:

test target target bridge header

Parece simple y obvio ahora, pero los errores fueron inútiles. Ninguna otra solución que vi para las testings de la unidad Swift sugirió que esto podría ser un problema, pero ahora lo sé.

Tl; dr

Para que las testings unitarias funcionen en Swift, el objective de testing debe saber todo lo que conoce el objective de la aplicación, por lo que también debe agregar una reference al encabezado de puente en su objective de testing (si corresponde).

Estoy usando Xcode 6.1

Debe agregar su file rápido a la target membership del target membership de testing.

introduzca la descripción de la imagen aquí

Si está utilizando Xcode 7, ahora hay una forma mucho mejor de lidiar con esto usando @testable import {ModuleName} .

Solo asegúrese de que el module que desea probar tiene la configuration de generación Enable Testability testing establecida en YES .