我想运行一些 android 测试,但我想安排或延迟这些测试的执行。我正在尝试从 SL4A 执行此操作。这个想法是安装 SL4A 从我的笔记本电脑启动服务器,运行一个特殊的 python 脚本,它将休眠大约 20 秒,然后唤醒并启动测试。我正在执行一些相当复杂的自动化,需要在我安装它们并断开 USB 电缆后运行我的测试。我知道我可以从 SL4A 发出意图,但我正在寻找相当于:
adb shell am instrument \
-e class MyInstrumentationTestCase \
-w MyInstrumentationTestRunner
这可以通过意图来完成吗?我应该发送广播还是使用启动活动功能?
我尝试使用此脚本从 Python 直接在设备上运行系统命令,但出现“权限被拒绝”错误:
from subprocess import call
call(["am", "instrument", "-e", "class", "com.example.android.app.test.TestContactList", "-w", "com.example.app.test/com.zutubi.android.junitreport.JUnitReportTestRunner"])
更新 我也尝试使用 os.system 来运行命令(见下面的修改),这给出了一个不同的错误:soinfo_link_image(linker.cpp:1635): could not load library "libanroid_runtime.so" required by "app_process"; 由所以 info_relocate(linker.cpp:975) 引起:无法找到“lib android_runtime.so”引用的符号“sqlite3_stmt_readonly”...无法链接可执行文件
import os
#from subprocess import call
#call(["am", "instrument", "-e", "class", "com.example.android.app.test.TestContactList", "-w", "com.example.android.app.test/com.zutubi.android.junitreport.JUnitReportTestRunner"])
os.system('echo "Running tests"')
os.system('am instrument -e class com.example.android.app.test.TestContactList -w com.example.android.app.test/com.zutubi.android.junitreport.JUnitReportTestRunner')
还有什么其他选择?