Could not determine bundle identifier for xxxTest

2019-03-20 01:06发布

问题:

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:

  1. Diabling the Tests except the App UITest
  2. Run the tests once
  3. Enable all Tests
  4. 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

回答1:

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.



回答2:

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.