在 macos 上用 xcode 配置单元测试和 ui 测试,核心是创建对应测试目标、正确关联代码、设置运行环境并执行。需分别添加 macos unit testing bundle 和 macos ui testing bundle 目标,通过 @testable import 暴露主 target 代码,ui 测试还需启用辅助功能权限并确保在真实 macos 环境运行。
在 macos 上用 xcode 配置单元测试和 ui 测试,核心是创建对应测试目标、正确关联代码、设置运行环境并执行。整个过程不依赖额外工具,xcode 原生支持,但容易卡在目标绑定、可见性或 scheme 切换上。
添加单元测试目标
单元测试用于验证逻辑层(如模型、工具类、算法)是否按预期工作。
- 在 Xcode 中打开项目,选择 File > New > Target
- 在模板列表中选 macOS Unit Testing Bundle(注意不是 iOS 或 watchOS)
- 点击 Next,填写测试目标名称(例如
MyAppTests),确保 Embed in Application 选项未勾选,Target to be tested 下拉菜单中选中你的主 macOS app 目标 - 完成创建后,Xcode 会自动生成一个
MyAppTests.swift文件,其中已包含基础 XCTestCase 子类和空的 test 方法
让被测代码可访问
默认情况下,测试目标无法访问主 target 的内部符号。需显式声明可测试性:
- 打开任意一个测试文件(如
MyAppTests.swift) - 在 import XCTest 下方添加:
@testable import MyApp(MyApp替换为你主 target 的实际模块名) - 确保主 target 的 Build Settings > Packaging > Product Module Name 与 import 名一致;若含特殊字符或空格,Xcode 通常会自动转为合法标识符(如
My App→My_App)
添加 UI 测试目标
UI 测试模拟用户操作,验证界面响应、导航流程和交互结果,适用于 macOS 的 AppKit 应用。
- 同样通过 File > New > Target,选择 macOS UI Testing Bundle
- 命名建议为
MyAppUITests,Target to be tested 同样选主 app 目标 - Xcode 会生成
MyAppUITests.swift,其中包含启动被测 app 的 setup 代码:let app = XCUIApplication()+app.launch() - 注意:UI 测试必须运行在真实 macOS 环境(不能在模拟器),且被测 app 需启用辅助功能权限(系统设置 > 辅助功能 > 开启 Xcode)
运行测试的必要操作
即使测试代码写完,不切换 scheme 或配置 executable 就无法运行。
- 顶部工具栏 scheme 下拉菜单中,选择刚创建的测试 target 对应的 scheme(如
MyAppTests或MyAppUITests) - 点击 Product > Scheme > Edit Scheme,左侧选 Test,确认右侧 Test 标签页中已列出全部测试用例;再选 Run 标签页,确保 Executable 设置为你的主 app(如
MyApp.app) - 快捷键 ⌘+U 运行当前 scheme 的所有测试;也可在测试方法名左侧菱形图标上点击单独运行
- 首次运行 UI 测试时,系统可能弹出权限提示,需手动允许 Xcode 控制其他应用











