例如,我从不使用以下描述XCTestCase.expectation
,所以我想使用一个函数来为其提供默认值,并通过命名清楚地表明我正在初始化期望,因为您不能真正使用初始化程序XCTestExpectation
。但如果扩展不在测试目标中,则无法编译:
无法加载“XCTest”的底层模块
import XCTest
public extension XCTestCase {
func makeExpectation() -> XCTestExpectation {
return expectation(withDescription: "")
}
}
我在这里创建了一个 xcworkspace (https://github.com/dtweston/TestFrameworkSample https://github.com/dtweston/TestFrameworkSample)演示了您的问题的解决方案。该工作区中有两个项目:
- 具有 iOS 应用程序目标和单元测试目标的 SampleApp 项目。
- SharedTestFramework 项目导入 XCTest 并声明您在问题中放入的单个扩展。
SampleAppTests 目标链接到 SharedTestFramework 以便能够使用它定义的扩展。单个测试文件导入 SharedTestFramework。
通过这些步骤,我也遇到了Cannot load underlying module for 'XCTest'
构建 SharedTestFramework 时。
解决这个问题的方法是更新Framework Search Paths
包括"$(PLATFORM_DIR)/Developer/Library/Frameworks"
。现在 SharedTestFramework 可以正确编译,正如您在我上传的工作区中看到的那样,SampleAppTests 目标能够成功使用它。
旧的和破烂的答案
您是否正在构建一个旨在导入到测试目标中的单独框架?如果是这样的话,那么我认为你只需要参考XCTest.framework
从您正在构建的这个自定义框架。
另一方面,如果您尝试将此扩展添加到您的应用程序目标使用的框架中,这似乎是一个坏主意,因为这意味着链接XCTest.framework
到进入商店并在人们的设备上运行的二进制文件。
我不确定这是否可能。我更有信心,这不是苹果所期望或支持的情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)