Xcode 9.1 Swift4 UITest构建失败:_main undefined问题求助
解决UITest构建时“_main undefined”的问题
Hey there! I’ve run into this exact issue when I was starting out with UI Tests in Xcode too—super frustrating, but there are a few common fixes that usually sort it out. Let’s go through them step by step:
检查测试目标的构建配置
首先,确认你的UI Test target没有被错误配置成独立可执行文件:- 在Xcode的Project navigator中选中你的UI Test target
- 切换到Build Settings标签页
- 搜索
Mach-O Type,确保它的值是Bundle(而不是Executable)。UI Test是作为测试 bundle 运行的,不需要自己的_main入口点 - 搜索
Product Name,确保它和主App target的名称区分开,避免构建配置混淆
验证测试类的结构
确保你的测试代码符合XCTest的规范:- 测试类必须继承自
XCTestCase - 测试方法必须以
test开头
示例代码如下:
import XCTest class YourAppUITests: XCTestCase { func testPrintHelloWorld() { print("Hello world") // 若要执行UI操作,需先启动App: // let app = XCUIApplication() // app.launch() } }如果类没有继承
XCTestCase,Xcode无法识别它为测试类,会导致构建时找不到正确的入口逻辑。- 测试类必须继承自
清理缓存并重启Xcode
Xcode的缓存偶尔会引发奇怪的构建问题,试试这些操作:- 按下
Cmd + Shift + K清理当前目标的构建文件夹 - 按下
Cmd + Option + Shift + K清理整个项目的构建缓存 - 完全退出Xcode(包括后台进程)后重新打开
- 按下
确认测试目标的宿主依赖
确保UI Test target正确关联了你的主App:- 选中UI Test target,切换到General标签页
- 在Testing区域的Host Application下拉菜单中,选择你的主App目标
如果这里为空或选择了错误的目标,也会导致链接时找不到必要的入口依赖
检查架构设置
针对错误中提到的x86_64架构问题:- 在Build Settings中搜索
Architectures,确保设置为Standard Architectures (Apple Silicon, x86_64) - 若存在
Valid Architectures选项(Xcode 12+默认隐藏),确保包含x86_64和arm64
- 在Build Settings中搜索
我当初就是误把UI Test target的Mach-O Type改成了Executable才触发这个错误,改回Bundle就立刻解决了。你可以从第一个排查步骤开始,应该能快速定位问题!
内容的提问来源于stack exchange,提问作者Eric Nguyen
相关产品推荐
相关产品推荐

