InjectionTDD
概述
该库通过使用 John Holdsworth 的 injectionforxcode 工具来触发 Xcode 单元测试。
每次您使用 ⌘+S 保存实现文件时,InjectionTDD 都会立即运行相关的单元测试。
Swift 版本
由于 InjectionTDD
库是用 Objective-C 编写的,所以它与任何 Swift 版本都兼容。
要求
- injectionforxcode(包含 TDD 功能的版本)
- 在 Swift 中编写实现和单元测试(项目可以是混合 Objective-C 和 Swift)
- Xcode 8 或 Xcode 9
- 使用
xcode-select
的有效全局 Xcode 版本
限制
- 目标中未使用静态库(.a 或静态 .framework)
- 测试目标有“主应用程序”
- 添加新的
.swift
文件时,需要按下 ⌘+⇧+U(或简单按 ⌘+U)
安装
1. 确保已正确设置全局 Xcode(《xcode-select》)
- 调用
xcode-select -p
- 如果路径与您当前的 Xcode 版本不对应,请使用以下命令设置:
command
sudo xcode-select -s /Applications/PATH_TO_YOUR_XCODE_VERSION/Contents/Developer
2. 将《InjectionTDD》集成到您的 Xcode 项目中
- 使用 CocoaPods 集成
《InjectionTDD》可通过 CocoaPods 获得。
要安装它,只需将以下行添加到您的 Podfile
中,并将其 添加到 Tests 目标 中。
...
target 'REMTTests' do
# Your test Pods
pod 'InjectionTDD', '~> 0.5'
end
- 使用 Carthage 集成
将以下行添加到 Cartfile
中,并将生成的 .framework
库与您的 测试目标 相连接。
github "polac24/InjectionTDD"
.framework
框架集成
与编译 将二进制框架添加到您的 测试目标。您可以在 发布部分 找到编译后的框架(InjectionTDD.framework.zip
)。
您可以在 一种整合二进制框架的方法 中找到示例集成。
如何使用它?
- 运行 injectionforxcode
- 在您的测试目标中成功集成
InjectionTDD
(步骤 2.)后,运行它(⌘+U),您将看到提示Ready for InjectionTDD...
- 这意味着您的单元测试正在等待注入包,永远不会终止
✅ - 使用 injectionforxcode,注入您的实现(例如快捷键 ⌃+=)
- injectionforxcode 会自动为您文件中的所有相关测试找到并执行它们
- 您将在输出控制台看到所有操作的摘要以及您的测试摘要
🎉
- 要使用 ⌘+S 在每次保存后立即获取反馈,请在 injectionforxcode 中启用“文件监视器”
- 您可以通过在测试操作中添加环境变量
INJECTION_TDD_SKIP=TRUE
来选择性地在您的模式中禁用InjectionTDD
测试摘要通知
要显示每次测试完成后都出现通知,请安装额外的断点,显示测试套件的摘要
摘要通知安装
mkdir -p /tmp/update_breakpoints_tdd && curl https://codeload.github.com/polac24/InjectionTDD/tar.gz/master | tar -xz --strip=3 --directory /tmp/update_breakpoints_tdd InjectionTDD-master/scripts/update_breakpoints/ && cd /tmp/update_breakpoints_tdd/ && ./update_breakpoints.sh && cd -
最佳实践
- 始终集成Keep InjectionTDD(例如,添加到
Podfile
中)并提供两种方案:(1)仅用于TDD开发;(2)用于具有禁用InjectionTDD的CI(见如何使用)。这有助于快速在标准开发和TDD开发之间切换。
建议
作者
Bartosz Polaczyk,[email protected]
致谢
该库是John Holdsworth的出色工具injectionforxcode的补充。有关实时代码注入的更多详情,请参阅Injection, the App和@Orta的视频帖子。
许可
InjectionTDD在MIT许可下可用。有关更多信息,请参阅LICENSE文件。