We do have troubles getting our CI to work with Xcode. We encounter the issue Could not determine bundle identifier for xxxTest TEST_HOST: some path that does not exist
.
What we have done so far:
- On the CI Machine we are able to run all tests on the device, but if we trigger it with a commit the CI does end in that error.
- We had that issue on other machines too, when we tried to run the tests of the application. We fixed that by cleaning the machine and reboot the devices.(Had do fix some scheme settings) Not we can run all tests but we run into the issue sometimes without any reason.
- We also double checked the schemes. The Host Application is set in every Tests scheme to the App itself.
Our project has the following targets:
- App
- App Unit Tests
- App UI Tests
- AppeareanceKit (Module)
- AppeareanceKit Unit Tests
- Models (Module)
- Models Unit Test
Found solution:
- Diabling the Tests except the App UITest
- Run the tests once
- Enable all Tests
- Run the tests
Question:
- What is happening there? How can we prevent from having that issue over and over again?
Known questions:
Xcode 8 Beta - Convert to Current Swift Syntax Failed: Could not find test host
Tests stop working under xcode 8 TEST_HOST error
So after ages of having this issue, we could find the right checkbox to fix this issue.
It somehow sounds weird but the issue was the configurations for the command-line builds inside of the Project settings.
I assume this happens because we always test against the debug configuration and it was set to release. Therefore it did the wrong build for the test host.
This does set the defaultConfigurationName
inside of the {projectname}.xcodeproject
.
Please comment if you have any more insights of this.
In my app I found a solution.
The problem was of course in the test target.
I hope that this solution will work for you too. Go to your test target build settings.
Search for test host.
In my case this testHost was looking like
build/{buildConfigurationName}-iphoneos/{schemeName}.app/{appName}
Which is wrong as the actual path must be
build/{buildConfigurationName}-iphoneos/{schemeName}.app/{schemeName}
so if you have a build configuration called Alpha, in your app named MyApp, with a scheme called MyApp-Alpha the test host path should be
build/Alpha-iphoneos/MyApp-Alpha.app/MyApp-Alpha
it was
build/Alpha-iphoneos/MyApp-Alpha.app/MyApp
I hope this can help... unfortunately this issue appears in many cases.