在 Xcode 8 beta 上使用 XCTest 时类型的值没有成员 'measure'

Value of type has no member 'measure' when using XCTest on Xcode 8 beta

我正在使用 Xcode 8 beta,当我创建一个包含单元测试的 iOS 项目时,我在 Podfile 上添加了 cocoapods:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

pod 'RealmSwift'
pod 'Reachability', '~> 3.2'
pod 'Alamofire', '~> 3.0'
pod 'ChameleonFramework/Swift'
pod 'SwiftyBeaver'
pod 'GMStepper'

然后我 运行 命令初始化 cocoapods:

pod install

之后我打开 project.xcworkspace 文件然后我得到这些错误:

Swift Compiler Error

Value of type '[ProjectName]Tests' has no member measure'

Ditto Error

Command /usr/bin/ditto failed with exit code 1

我只是做了一些简单的事情来创建我的工作区,就像我以前用 Xcode 7.3 做的那样,但这次我不能。

解决这个问题的想法?

这真的晚了,您可能已经找到了解决方案。我带着同样的问题来到这里,但没有看到答案,所以我只是发布以供参考。

func measure( () -> Void)

...好像消失了

public func measureBlock(block: () -> Void)

...虽然有效。

我希望我对这个问题有更好的了解,并且可以就错误原因提供更详细的解释。我非常不喜欢 "magic" 解决方案,但不了解它们的工作原理。也就是说,神奇的解决方案比 none 好太多了....

我遇到了上述问题,在寻找解决方案时遇到了这个 SO 问题,但遗憾的是没有找到解决方案。出于沮丧,我尝试清理我的项目(产品 > 清理)解决了问题。

我怀疑是关于 cocoapods 设置的某些东西导致了某种 "leftovers",但需要比我更有经验的人才能深入研究细节。

经过几个月的研究,我终于解决了错误。问题出在我的 cocoapods 文件上。我必须指定主项目和 Unit Test 项目的目标。这就是我的 cocoapods 文件现在的样子:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target "ProjectName" do
    pod 'RealmSwift'
    pod 'Reachability', '~> 3.2'
    pod 'Alamofire', '~> 3.0'
    pod 'ChameleonFramework/Swift'
    pod 'SwiftyBeaver'
    pod 'GMStepper'
end

target "ProjectNameTests" do
    pod 'RealmSwift'
    pod 'Reachability', '~> 3.2'
    pod 'Alamofire', '~> 3.0'
    pod 'ChameleonFramework/Swift'
    pod 'SwiftyBeaver'
    pod 'GMStepper'
end

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '3.0'
        end
    end
end

然后我 运行 pod update 清理了项目,当我构建项目时,所有 Unit Tests 错误都消失了。