我可以在同一台Mac上打开多个模拟器,以便使用Xcode的UI测试进行并行测试吗?
答案 0 :(得分:3)
2018年5月更新:
Bluepill允许将测试拆分为多个模拟器并支持{
"kind": "drive#file",
"id": string,
"etag": etag,
"selfLink": string,
"webContentLink": string,
"webViewLink": string,
"alternateLink": string,
"embedLink": string,
"openWithLinks": {
(key): string
}
s:
我们最近添加了对Xcode UI Testing捆绑包的支持。感谢 来自FBSimulatorControl的灵感。 Bluepill现在支持Xcode单元 测试包和UI测试包。
原始答案:
目前似乎还不是一个可行的解决方案。然而,有希望的工具正在到位。有一个名为FBSimulatorControl的框架及其名为fbsimctl的cli工具,它允许您同时启动多个模拟器,并安装&运行应用程序。
使用XCUITest
,您可以构建目标应用程序&在每个模拟器上安装它。我坚持的部分是如何构建&安装随附的XCTestUI runner应用程序。
fbsimctl
似乎不允许在不调用测试操作的情况下构建XCTestUI runner应用程序(导致多个模拟器打开的警报)。如果xcodebuild
只允许为转轮应用构建xcodebuild
,那么看起来.app/.ipa
可以处理其余内容。
在facebook/xctool尝试解决此问题时,还有一个未解决的问题。
答案 1 :(得分:3)
如果您在Mac上使用多个用户和某种持续集成系统,则可以进行并行UI测试。如果操作正确,您可以同时在各种设备模拟器上运行UI测试套件。换句话说,您可以在一台设备上运行这些测试所需的时间内针对许多设备运行所有UI测试 - 我认为这是我们在这里尝试完成的。以下是关于如何使用gitlab-ci-multi-runner启动和运行并行UI测试的说明。这些说明假设您从未使用过任何工具,但不是如何编写UI测试的说明:
xcode-select --install
ssh-keygen -t rsa
pbcopy < ~/.ssh/id_rsa.pub
在每个测试中获取生成的SSH密钥&#39;用户帐户然后使用cmd + v将每个SSH密钥粘贴到&#34;密钥&#34; &#34; SSH密钥&#34;上的文本字段gitlab中的标签。git clone
测试每个用户是否有权访问回购。用户。sudo curl --output /usr/local/bin/gitlab-ci-multi-runner https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-darwin-amd64
然后点击返回。sudo chmod +x /usr/local/bin/gitlab-ci-multi-runner
然后点击返回。gitlab-ci-multi-runner install
然后点击返回。gitlab-ci-multi-runner start
然后返回。gitlab-ci-multi-runner status
,然后按“返回”以确保服务正在运行。gitlab-ci-multi-runner register
并点击返回。Shell
并点击返回。nano /Users/{test user name}/.gitlab-runner/config.toml
并按Enter键。git add .
中,点击返回以确保包含方案文件。git commit -am "Added ui test scheme"
并点击返回。git push
并点击返回。
before_script:
- carthage update
stages:
- test
iphone_4s_tests:
stage: test
script:
- xcodebuild test -configuration Debug -project parallel.xcodeproj -scheme parallelUITests -destination 'platform=iOS Simulator,name=iPhone 4s' | xcpretty --simple
tags:
- iphone_4s
iphone_5s_tests:
stage: test
script:
- xcodebuild test -configuration Debug -project parallel.xcodeproj -scheme parallelUITests -destination 'platform=iOS Simulator,name=iPhone 5s' | xcpretty --simple
tags:
- iphone_5s
iphone_6_tests:
stage: test
script:
- xcodebuild test -configuration Debug -project parallel.xcodeproj -scheme parallelUITests -destination 'platform=iOS Simulator,name=iPhone 6' | xcpretty --simple
tags:
- iphone_6
&#13;
git add .gitlab-ci.yml
的项目目录中,然后按Enter键。git commit -am "Added the .gitlab-ci.yml file to the project."
然后返回。git push
然后返回。BOOM!如果您已经正确地完成了所有工作,那么最终您已经实现了对多个iOS设备并行测试UI的最大梦想。当您导航到gitlab项目页面然后导航到&#34; Piplines&#34;时,您会注意到您的UI测试现在可以并行运行。 IMO这是完成所有UI测试的最便宜,最有效的方法。在您的测试套件在一台设备上完成一轮测试时,您可以 - 理论上 - 完成您希望测试的所有设备的UI测试。这种解决方案比试图购买几台设备并同时进行全部测试要便宜得多。一般来说,根据规格,单个mac可以一次运行10-15个设备,如果没有其他任何因素占用CPU的话。
答案 2 :(得分:1)
现在使用XCODE 9,您可以一起启动多个模拟器,也可以在多个设备上运行并行测试。
答案 3 :(得分:0)
使用多个模拟器并行运行UITests,请查看LinkedIn的这个惊人的开源库&gt; https://github.com/linkedin/bluepill
答案 4 :(得分:0)
您好!WWDC18
“测试”环节有什么新变化
https://developer.apple.com/videos/play/wwdc2018/403/
听到有关代码覆盖率令人兴奋的改进的信息,包括如何在Xcode的覆盖率报告之上构建自己的自动化系统。了解如何利用Xcode 10中新增的分布式并行测试来极大地加快测试的执行速度。