
在基于APK的自动化测试过程中,要确保的一件事是要测试的APK必须具有与测试项目相同的签名. 如何确保两者具有相同的签名?具体的实现方法将在下面给出.
首先删除经过测试的APK的签名,然后使用调试密钥库对其重新签名. Eclipse还使用调试密钥库作为默认密钥库来对应用程序进行签名,以确保被测试和测试的应用程序具有相同的签名.
Eclipse的默认调试密钥库可以在此处设置,窗口->首选项-> Android->构建

删除APK的签名,然后重新签名. 您可以通过re-sign.jar jar来完成. 下载地址:

链接: 密码: itjs
安装包的下载地址: 链接: 密码: rrya
双击以打开re-sign.jar,将要测试的apk拖动到界面中
![clipboard[1]](https://images2015.cnblogs.com/blog/599420/201605/599420-20160510180919343-28029030.png)
![clipboard[2]](https://images2015.cnblogs.com/blog/599420/201605/599420-20160510180920437-53739982.png)

点击“保存”按钮
![clipboard[3]](https://images2015.cnblogs.com/blog/599420/201605/599420-20160510180921577-904002904.png)
过一会儿,您将获得该软件包的Package.name和Main活动
创建一个新的Android测试项目
![clipboard[4]](https://images2015.cnblogs.com/blog/599420/201605/599420-20160510180922780-771184349.png)

该项目名为YrhxTest
![clipboard[5]](https://images2015.cnblogs.com/blog/599420/201605/599420-20160510180924171-1750969061.png)
选择此项目
![clipboard[6]](https://images2015.cnblogs.com/blog/599420/201605/599420-20160510180925296-698275396.png)
创建一个新的libs目录,添加robotium的jar,然后将jar包添加到构建路径

创建一个新包com.yrhx.test,创建第一个测试类FirstYrhxTest,继承ActivityInstrumentationTestCase2,具体代码如下:
package com.yrhx.yrhxClient.test; import com.robotium.solo.*; import android.test.ActivityInstrumentationTestCase2; @SuppressWarnings("rawtypes") public class login_1 extends ActivityInstrumentationTestCase2 { private Solo solo; private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.yrhx.yrhxClient.activity.WelcomeActivity"; private static Class<?> launcherActivityClass; static{ try { launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } @SuppressWarnings("unchecked") public login_1() throws ClassNotFoundException { super(launcherActivityClass); } public void setUp() throws Exception { super.setUp(); solo = new Solo(getInstrumentation()); getActivity(); } @Override public void tearDown() throws Exception { solo.finishOpenedActivities(); super.tearDown(); } public void testRun() { // Wait for activity: 'com.yrhx.yrhxClient.activity.WelcomeActivity' solo.waitForActivity("WelcomeActivity", 2000); // Wait for activity: 'com.yrhx.yrhxClient.activity.MainActivity' assertTrue("MainActivity is not found!", solo.waitForActivity("MainActivity")); // Click on 账户 solo.clickOnView(solo.getView("rb_tab_user")); // Wait for activity: 'com.yrhx.yrhxClient.activity.NewLoginActivity' assertTrue("NewLoginActivity is not found!", solo.waitForActivity("NewLoginActivity")); // Scroll View to the right side solo.scrollViewToSide(solo.getView("vp_login"), Solo.RIGHT); // Click on 15629171568 solo.clickOnView(solo.getView("et_user_mobile", 1)); // Enter the text: '1562917xxxx' solo.clearEditText((android.widget.EditText) solo.getView("et_user_mobile", 1)); solo.enterText((android.widget.EditText) solo.getView("et_user_mobile", 1), "1562917xxxx"); // Click on Empty Text View solo.clickOnView(solo.getView("et_user_password")); // Enter the text: 'xxxxxx' ,input yours password solo.clearEditText((android.widget.EditText) solo.getView("et_user_password")); solo.enterText((android.widget.EditText) solo.getView("et_user_password"), "xxxxxx"); // Click on 登 录 solo.clickOnView(solo.getView("bt_login", 1)); // Click on ImageView solo.clickOnView(solo.getView("ib_exit")); } }
通过adb install安装重新签名的APK
将AndroidMainfest.xml中的targetToolage工具修改为从上面的re-sign.jar获得的包名称,即com.yrhx.yrhxClient
![clipboard[7]](https://images2015.cnblogs.com/blog/599420/201605/599420-20160510180926468-1429064280.png)
用鼠标右键单击FirstQunarTest,选择Run As-> Android JUnit Testrobotium无源码测试,注意屏幕,然后将启动被测应用程序.
Robotium支持基于源的测试和基于APK的测试. 实际上,原理是相同的,只要被测应用程序与被测应用程序具有相同的签名即可. 如果有源代码,建议进行基于源的测试,因为您可以直接轻松地在源代码中引用一些现成的方法来帮助进行自动化测试robotium无源码测试,控件定位也更加方便,您可以直接引用源R文件的ID如果控件的显示文本已更改,但其ID保持不变,如果按ID定位,则此时无需修改测试代码. 如果要替换一些手动测试而不使用源代码,仍然可以使用基于APK的测试,但是灵活性可能不如基于源代码的方法好.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-190143-1.html
能过上体面的生活
我的小王子
敢独立大陆就敢动武