目前我们的测试失败了,因为当授予位置权限时,我们永远不会进入下一个屏幕,因为位置更新永远不会发生。
这是因为使用Fastlane设置的新模拟器实例未设置位置。应用程序目标方案指定了默认位置,UI测试目标也是如此;都不尊重。当测试从Xcode运行时,位置DO得到尊重,而不是当模拟器从命令行激活时,因为模拟器应用程序从未实际打开,只是存在,由终端拥有但不可见。测试套件上的位置也已设置。
如何在脚本中设置模拟器的位置,当模拟器以不可见的方式运行时,该脚本将被尊重?
我发现了这个:https://github.com/lyft/set-simulator-location
它需要这个脚本:
# download set-simulator-location
brew install lyft/formulae/set-simulator-location
# run simulator
export IOS_SIMULATOR_UDID=`instruments -s devices | grep "iPhone 6 (10.3) \[" | awk -F '[ ]' '{print $4}' | awk -F '[\[]' '{print $2}' | sed 's/.$//'`
echo $IOS_SIMULATOR_UDID
open -a "simulator" --args -CurrentDeviceUDID $IOS_SIMULATOR_UDID
# wait simulator to start fully
sleep 15
# set location
set-simulator-location -q London
但它似乎很笨重,需要对特定模拟器进行硬编码,然后打开它,等待15秒,然后在其上设置位置。我觉得必须有更好的方法。