iOS单元测试:Class都在两者中实现

时间:2015-10-14 14:19:40

标签: ios xcode swift unit-testing xcode7

我正在使用Swift 2和XCode7构建iOS 9应用程序。

我的应用在将其部署到手机时运行正常。 但是当我运行任何单元测试时,我会收到很多类的以下错误消息:

类_TtC5 AppName 19 ClassName 在/ Users / 用户名 / Library / Developer / CoreSimulator / Devices / UUID中实现 / data / Containers / Bundle / Application / UUID / AppName .app / AppName 和/ Users / 用户名< /强> / 路径/到/工作区 / DerivedData /的 AppName的 /建造/产品/调试-iphonesimulator /的 AppName的 .xctest /的 AppName的即可。将使用两者之一。哪一个未定义。

有什么想法吗?

4 个答案:

答案 0 :(得分:4)

仅将测试类添加到测试目标,而不添加任何iPhone应用程序类。然后,只需将您的应用名称作为模块导入到测试类之上,即可访问所有应用类。

import MyAppName

答案 1 :(得分:1)

运行测试套件时重复的类实现:就我而言,由于测试目标具有主机应用,因此您无需链接第三方框架。我必须从“构建设置”中清除“其他链接器标记”(OTHER_LDFLAGS),因为它已链接到工作区的所有CocoaPods。

答案 2 :(得分:1)

我在XCTest上遇到了相同的错误。记住选择Allow testing Host Application APIs

enter image description here

然后像其他人所说的那样,在Build Phases中输入XCTest Target,确保Compile Sources中有零个文件已经在Host Application中进行编译。

答案 3 :(得分:0)

@Mundi的回答在某些情况下是正确的。

但是,我遇到了同样的错误,导致它的原因是Cocoa Pods的libPods.a文件在应用程序目标和测试目标中被链接。