How to unit test an app extension on Xcode 6
ios, ios-app-extension, unit-testing, xcode
Solution
I have reported the bug to Apple. And sadly, the answer is that the keyboard extension is not support unit test now. The answer comes from Apple:
- It's not currently supported to run unit tests inside an app extension
- Instead, factor the code you want to test into a framework and test the code there
- Link the framework into your extension
Problem
Does anyone know how to perform unit testing on app extension target, especially keyboard extension target? What have I tried (in the unit test target): - In the "General" tap, set it's target to the extension target instead of the container app. - Set the "Bundle Loader" to the path of the binary of the extension target, which looks like `$(BUILT_PRODUCTS_DIR)/com.mycompany.keyboard.appex/com.mycompany.keyboard` - Set the "Test Host" to `$(BUNDLE_LOADER)`. - In the "Build Phases" tap, set the "Target Dependencies" to both the container app and the extension. After these things done, I can build it successfully but always get "Test Failed" with an log `Test target SogouInputTests encountered an error (Test session exited(1). without checking in. If you believe this error represents a bug, please attach the log file at /tmp/TestStatus-UXfvxw.log)`. I'm using Xcode 6 beta 3.