iOS Unit Testing: Class is implemented in both

2019-01-26 18:34发布

问题:

I'm building an iOS 9 App with Swift 2 and XCode7.

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 _TtC5AppName19ClassName 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?

回答1:

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


回答2:

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.