I'm building an iOS 9 App with Swift 2 and Xcode 7.
My app runs fine when deploying it to my phone but when I run any unit test, I get the following error message for a lot of classes:
Class _TtC5<AppName>19<ClassName> is implemented in both /Users/<Username>/Library/Developer/CoreSimulator/Devices/<UUID>/data/Containers/Bundle/Application/<UUID</<AppName>.app/<AppName> and /Users/<Username>/<Path/To/Workspace>/DerivedData/<AppName>/Build/Products/Debug-iphonesimulator/<AppName>.xctest/<AppName>. One of the two will be used. Which one is undefined.
Any ideas?
Only add the test class to your test target and none of the iPhone app classes. Then simply import your app name as a module on top of your test class to get access to all app classes.
import MyAppName
Duplicated class implementations while running the test suite: in my case, since the test target has a host app, you don’t need to link the third-party frameworks. I had to clean the "Other Linker Flags" (OTHER_LDFLAGS
) from Build Settings because it was linking to all CocoaPods of the workspace.
The answer by @Mundi is correct for some cases.
However, I experienced the same error and what was causing it is that the libPods.a
file for Cocoa Pods was being linked in the app target and the test target.
来源:https://stackoverflow.com/questions/33127896/ios-unit-testing-class-is-implemented-in-both