【发布时间】:2018-10-06 14:30:43
【问题描述】:
我正在编写一个脚本文件来从 shell 运行 Android 测试用例,我有一些 Android ADB commands 来运行脚本文件中的测试用例来执行,并让 wait 等待第一组测试用例结束后设置结束然后开始秒。
脚本文件:sn-p
#!/bin/bash
# set up code
#First set of test cases
adb -s emulator-5554 shell am instrument -w com.android.demo.app.tests1/android.support.test.runner.AndroidJUnitRunner &
adb -s emulator-5556 shell am instrument -w com.android.demo.app.tests2/android.support.test.runner.AndroidJUnitRunner &
wait # Second set test cases does not started because this **wait** never ends
#Second set of test cases
adb -s emulator-5554 shell am instrument -w com.android.demo.app.tests3/android.support.test.runner.AndroidJUnitRunner &
adb -s emulator-5556 shell am instrument -w com.android.demo.app.tests4/android.support.test.runner.AndroidJUnitRunner &
wait
echo '--------- Test cases done --------------'
如果我运行脚本,它会执行其运行第一组(test1 和 test2)用例,并且等待永远不会结束以启动第二组测试用例 但 Android 工作室(Android 的 IDE)表示已完成 test1 和 test2 的测试用例,这是第一次设置。 注意:ADB 在 Android Emulator 上运行测试用例。 请帮助我了解为什么我没有等待结束。
【问题讨论】:
-
wait不会退出adb的两个副本(以及之前在“设置代码”中省略的任何其他后台进程)。提出这个问题是您有责任证明adb已 退出,因此 shell 的行为在任何方面都是出乎意料的。您还有责任证明没有任何“设置代码”会创建其他作业表条目,这些条目引用仍在运行的作业,因此仍可能成为wait目标。
标签: android linux macos shell sh