前提:需要root权限的手机才能实现apk打包后自动化测试第三方,如果不需要打包运行的话则不需要root权限,可直接通过android studio 运行ExampleInstrumentedTest类直接在手机上跑,
第一步:
public class MainActivity extends Activity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView runBtn = (TextView) findViewById(R.id.runBtn);
runBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
new Openweixin().start();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
class Openweixinextends Thread{
@Override
public void run() {
//class后的参数是包名+类名
ShellUtils.execCommand("adb shell am instrument -w -r -e debug false -e class 'com.juchiwang.app.xx.ExampleInstrumentedTest' com.juchiwang.app.xx.test/androidx.test.runner.AndroidJUnitRunner",true);
}
}
/**
* 运行uiautomator是个费时的操作,不应该放在主线程,因此另起一个线程运行
*/
class UiautomatorThread extends Thread {
@Override
public void run() {
super.run();
String command=generateCommand("com.juchiwang.app.xx", "ExampleInstrumentedTest", "useAppContext");
CMDUtils.CMD_Result rs= CMDUtils.runCMD(command,true,true);
Log.e(TAG, "run: " + rs.error + "-------" + rs.success);
}
/**
* 生成命令
* @param pkgName 包名
* @param clsName 类名
* @param mtdName 方法名
* @return
*/
public String generateCommand(String pkgName, String clsName, String mtdName) {
String command =