XCUITest - QQ群445056799
充分利用Xcodebuild来完善、掌控、加速你的iOS UI自动化测试吧!
Xcode8之前,想要运行单元测试和UI测试,都需要进行编译。事实上集成到自动化环境中,在Jenkins节点等服务机上编译整个项目(就像打包app)是十分耗时且依赖配置的。
Xcode8的发布,带来了iOS测试和开发的xcodebuild的一些新特性:
build-for-testing & test-without-building
就是把UITest的编译和运行测试环节可以分开,不仅如此,编译的结果可以带到其它机器上直接执行测试流程哦。
当你的UITest脚本趋于稳定的时候,就可以考虑并发测试啦。build once,test anywhere!
2.1编译(创建xctestrun文件)
xcodebuild build-for-testing
-workspace PreciousMetals.xcworkspace
-scheme PreciousMetalsDevUITests
-destination 'platform=iOS,name=李鹏 SuperXperia'
-derivedDataPath /Users/lipeng/Desktop/DerivedPath
该命令会编译app并在DerivedPath文件夹中生成xctestrun文件。
可以在DerivedPath这个文件夹中找到xctestrun文件
2.2直接执行UI自动化测试
xcodebuild test-without-building
-xctestrun /Users/lipeng/Desktop/Build/Products/PreciousMetalsDevUITests_iphoneos12.1-arm64e.xctestrun
-destination 'platform=iOS,name=iPhone 7'
-resultBundlePath /Users/lipeng/Desktop/checkReport
destination参数可以指定多个
类似:
xcodebuild \
test-without-building \
-workspace PreciousMetals.xcworkspace \
-scheme PreciousMetalsDevUITests \
-destination "platform=iOS Simulator,name=iPhone X" \
-destination "platform=iOS Simulator,name=iPhone 8 Plus" \
-destination "platform=iOS Simulator,name=iPhone 6s" \
-resultBundlePath /Users/lipeng/Desktop/TestResult/GuijinshuDev
执行该命令会看到命令行终端给出提示:
Testing on multiple destinations concurrently.
Note that it is not possible to run tests in parallel on individual destinations in this mode.
Pass-disable-concurrent-destination-testinginstead to allow tests to run in parallel on each destination, but have the destinations run serially.
Maximum concurrent test device destinations is unlimited. (Adjust this with -maximum-concurrent-test-device-destinations.)
Maximum concurrent test simulator destinations is set to 4. (Adjust this with -maximum-concurrent-test-simulator-destinations.)
默认是并发地使用多个目标来展开测试。
增加-disable-concurrent-destination-testing参数可以是测试在这些目标上串行进行。
最大的真机并发数量并没有限制。
真机和模拟器的最大并发测试数量都可以通过对应的参数来指定。
-maximum-concurrent-test-device-destinations
-maximum-concurrent-test-simulator-destinations
那么resultBundlePath指定的路径就是测试结果数据所在的文件夹啦。
结合xchtmlreport命令可以产生多设备测试结果报告。(点击可以打开项目地址)
在执行xcodebuild test或者test-without-building命令的时候,修改默认的-resultBundlePath 参数,将测试记录指定到自己想要的目录yourDir(上文中就是/Users/lipeng/Desktop/TestResult/GuijinshuDev)
安装:
$ brew install https://raw.githubusercontent.com/TitouanVanBelle/XCTestHTMLReport/develop/xchtmlreport.rb
使用:
$ xchtmlreport -r /Users/lipeng/Desktop/TestResult/GuijinshuDev
就可以得到更加适合非专业人士阅读的UI自动化测试报告了:
极力推荐这个测试报告生成工具,可以查看多个机型的汇总报告。(相对于xcpretty更适合生成xcuitest报告)