Since I haven't found this info anywhere in the Blogosphere and had to painfully gather it through a long debugging stare, I'm posting it here:
If you want do debug Unit Tests in Xcode 3.1 you have to do the usual, that is:
- Make a custom Executable
- Set it's argumet to
-SenTest All
- Set some Environment Variables
DYLD_INSERT_LIBRARIES
to${DEVELOPER_LIBRARY_DIR}/PrivateFrameworks/DevToolsBundleInjection.framework/DevToolsBundleInjection
DYLD_FALLBACK_FRAMEWORK_PATH
to$(DEVELOPER_LIBRARY_DIR)/Frameworks
XCInjectBundle
to$(BUILT_PRODUCTS_DIR)/InvocationBuilder Tests.octest
This is of course where you have enter the name of your test bundle
So far nothing new.
What is new though is that you also set the variable XCInjectBundleInto
to point to the executable that is going to load the tests (probably to avoid the 3.0 Bug that would load the tests into the shell that GDB used to start the Application). This should be the same as the $(TEST_HOST)
variable that you have to set for the Unit Test bundle. In my case this is $(BUILT_PRODUCTS_DIR)/InvocationBuilder.app/Contents/MacOS/InvocationBuilder
.
This is quite interesting, since it means that otest
is not used anymore to start the tests, but instead RunTargetUnitTests
executes the tests directly.
Well, now that I can again debug my tests maybe I'l even get it to work with debugging Unit Tests which use Mock-Objects sometime. :-)