Unit Test "runtime information does not match" private framework
Unit Test "runtime information does not match" private framework
- Subject: Unit Test "runtime information does not match" private framework
- From: Jerry Krinock <email@hidden>
- Date: Sun, 14 Jul 2013 00:56:12 -0700
Unit tests which I've added to a pre-existing Mac app project crash upon loading with this…
"The test bundle at /Users/jk/Library/Developer/Xcode/DerivedData/MyApp-erjagcrpeurpyadfanfvztysloib/Build/Products/Debug/MyAppTests.octest could not be loaded because its Objective-C runtime information does not match the runtime information required by the test rig. This is likely because the test rig is being run with Objective-C garbage collection disabled, but the test bundle requires Objective-C garbage collection. To enable Objective-C garbage collection for the test rig, run it in an environment without the OBJC_DISABLE_GC environment variable."
The app is actually a thin wrapper around a framework, which we'll call MyFramework. I've read a half dozen articles and forum postings on the topic, in particular one by Todd Huss [1], and tried the three Build settings that Todd lists in there [steps 4-6], but none of them help. (I set the Bundle Loader to $(BUILT_PRODUCTS_DIR)/MyFramework.framework/MyFramework.)
One thing Todd didn't mention, maybe because it's obvious, is that the Test Bundle target must link, in "Link Binary with Libraries", to MyFramework, or maybe the app. If I do *not* so link, instead of getting the error above, the test loads OK but, as expected, crashes the first time that a test case attempts to instantiate a testee object in MyFramework.
Trying to understand that long error message, I need but don't have a checklist of that so-called "runtime information", so I can see if they "match". Taking some wild guesses, both the Test Bundle and MyFramework have the same Build Settings for
• Architecture = Standard 32/64 Intel
• SDK = Latest Mac OS X (Mac OS X 10.8)
• Objective-C Automatic Reference Counting = NO (It's an old project)
And neither uses Garbage Collection. Looks like there's not even a Build Setting for that any more (Xcode 4.6). I should file a bug on the "This is likely because … garbage collection" part of that error message.
What other "runtime information" might be relevant?
The "Test Rig" Build Setting in both the Test Bundle target and MyFramework is empty. Why is it referring to a "test rig"?
Thanks,
Jerry Krinock
[1] http://twobitlabs.com/2011/06/adding-ocunit-to-an-existing-ios-project-with-xcode-4/
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden