我必须在我的AVD上执行多次测试,并且使用adb shell
命令也有点像
/Users/roger/AndroidSDK/sdk/platform-tools/./adb shell am instrument -w -e class com.demo.test.MyTest1 com.demo.test/android.test.InstrumentationTestRunner
/Users/roger/AndroidSDK/sdk/platform-tools/./adb shell am instrument -w -e class com.demo.test.MyTest2 com.demo.test/android.test.InstrumentationTestRunner
现在,假设当前两个测试都是作为一个单独的项目创建的,测试apk安装在虚拟设备上。我必须使用java项目执行这些测试。
我正在使用mac,所以我创建了一个shell脚本mytestscript.sh
并编写了一个java程序来执行如下脚本:
public static String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
// use logger
}
return output.toString();
}
这就是我调用方法executeCommand("sh scripts/mytestscript.sh");
我面临的问题是当我搬到Windows系统时,我必须在Windows机器上安排这项工作。必须创建一个.bat
文件来执行这样的命令:
executeCommand("cmd /c start scripts\\mytestscript.bat");
现在,这将打开Windows上的cmd终端并执行第一个命令,但在测试完成后,不会执行第二个命令。我必须手动关闭终端,然后执行第二个不需要的命令。
有没有办法实现这个目标?如何在Windows中使用android的批处理文件执行多个命令?在Windows上执行.sh
脚本的任何替代方法?
我已经完成了Running multiple adb shell commands in batch file,但它与我想要的不同。