例如,我从不使用XCTestCase.expectation
的描述,因此我想使用函数为其提供默认值,并通过命名我明确初始化期望,因为你不能真正使用XCTestExpectation
的初始值设定项。但是如果扩展不在测试目标中,那么就无法编译:
无法加载' XCTest'
的基础模块
import XCTest
public extension XCTestCase {
func makeExpectation() -> XCTestExpectation {
return expectation(withDescription: "")
}
}
答案 0 :(得分:8)
我在这里创建了一个xcworkspace(https://github.com/dtweston/TestFrameworkSample),它可以解决您的问题。此工作空间中有两个项目:
SampleAppTests目标链接到SharedTestFramework,以便能够使用它定义的扩展。单个测试文件导入SharedTestFramework。
通过这些步骤,我在构建SharedTestFramework时也会遇到Cannot load underlying module for 'XCTest'
。
此修复方法是更新Framework Search Paths
以包含"$(PLATFORM_DIR)/Developer/Library/Frameworks"
。现在,SharedTestFramework正确编译,正如您在我上传的工作区中看到的那样,SampleAppTests目标能够成功使用它。
您是否正在构建一个旨在导入测试目标的单独框架?如果是这种情况,那么我认为您只需要参考您正在构建的自定义框架中的XCTest.framework
。
另一方面,如果您尝试将此扩展程序添加到应用程序目标使用的框架中,这似乎是一个坏主意,因为这意味着将XCTest.framework
链接到二进制文件进入商店并在人们的设备上运行。
我不确定这是否可行。我更有信心这不是Apple期望或支持的方案。