Error de vinculador al acceder al module de aplicación en testings de interfaz de usuario en XCode 7.1

Estoy intentando implementar algunas testings de interfaz de usuario en mi proyecto. Todo va bien, siempre y cuando lo mantenga simple: registre el caso de testing, agregue algunas afirmaciones y luego ejecute la testing. Esto funciona bien, sin embargo, cuando bash acceder al module de aplicación desde mi testing, el linker muestra un error (ver más abajo):

En el file fuente de la aplicación:

func foo() { assert(true) } 

En las testings de interfaz de usuario:

 import XCTest @testable import MyApp func testExample() { foo() } 

Error:

Símbolos no definidos para la architecture i386: "MyApp.foo () -> ()", referencedo desde: MyAppUITests.MyAppUITests.testExample (MyAppUITests.MyAppUITests) () -> () en MyAppUITests.o ld: símbolo (s) no encontrado architecture i386 clang: error: el command linker falló con el código de salida 1 (use -v para ver la invocación)

Símbolos no definidos para la architecture x86_64: "MyApp.foo () -> ()", referencedo desde: MyAppUITests.MyAppUITests.testExample (MyAppUITests.MyAppUITests) () -> () en MyAppUITests.o ld: símbolo (s) no encontrado architecture x86_64

Tengo un problema similar publicado aquí: https://forums.developer.apple.com/thread/20609 pero no hay solución. Me parece que el @testable simplemente no funciona correctamente. El chico de developer.apple.com intentó solucionarlo agregando Test Host y Bundle Loader en la configuration, pero no creo que este sea el enfoque correcto. Creo que el @testable debería hacer que todo funcione, y no se ve así en este momento. Cualquier ayuda apreciada!

@testable import MainModule no funcionará para la testing de interfaz de usuario, aunque habilitaría la finalización del código (puede hacer que sienta que funciona). Está diseñado solo para la testing de unidades hasta el momento. Y conduciría a la falla de la construcción, algo así como:

 ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

La solución consiste en agregar el file de código fuente al destino de la testing de interfaz de usuario, y funcionará @testable import (incluso sin @testable import ).

Inspector de files -> Membresía de destino -> comprobar el objective de testing de UI (además del objective principal)

Hope Apple lo solucionará pronto para que podamos tener una manera más limpia de usarlo.

Las testings de interfaz de usuario son un module separado de la aplicación, por lo tanto, no se ejecutan dentro de su aplicación como lo haría una testing lógica. La única forma de compartir código es comstackr en todos los files de la aplicación que necesita compartir entre los dos modules. Consulte este blog para saber cómo puede lograrlo, https://www.bignerdranch.com/blog/ui-testing-in-xcode-7-part-1-ui-testing-gotchas/

También se encontró un radar archivado aquí, https://openradar.appspot.com/23116258

La import de testing realmente podría estar causando este error. Solo saca la línea. No es necesario para UITests.

Aviso a los 6 minutos, Apple Developers no utiliza @testable. https://www.youtube.com/watch?v=7zMGf-0OnoU&t=1316s