西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网

解决Android Studio执行 Instrumentation提示Method "xxx" not found

时间:2016-01-22 14:51来源:未知 作者:好模板 点击:
执行新写的测试用例,Android Studio 提示该方法找不到: junit.framework.AssertionFailedError: Method testSayHi not foundat android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:165)at android.test.Activi

执行新写的测试用例,Android Studio 提示该方法找不到:

junit.framework.AssertionFailedError: Method "testSayHi" not found
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:165)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1853)

这是啥鬼呢?Paul 哥也没教我咋解决啊!自己折腾起来吧~~


首先分析该错误原因:

既然提示该方法找不到,那肯定是没有把最新的测试 APK 装到手机里面咯。

问题确定了,那么下一步该做什么呢?当然是检查 Android Studio 的配置啦:


编辑运行配置

按照上图的提示打开运行配置窗口,然后切换到 Miscellaneous 标签,看到了 “Skip installation if APK has not changed” 选项默认是勾选的,如图:


Miscellaneous 标签选项

猜想:勾选此项后,如果不修改应用代码,测试 APK 也会跳过安装?

瞎扯!去掉勾选后还是那样~

嗯,看来要换一条思路了……

那,把应用卸掉呢?

果然,将应用从手机上卸载后,测试正常执行。

可是,如果每次执行测试都要手动卸载一次应用太麻烦了。

那咋办咧?

再换个思路呗!这次从 强大的 Gradle 入手,我们先来看一下如何通过 Gradle 命令执行测试:

./gradlew connectedAndroidTest

哎哎哎,这家伙在运行完测试就自动把 APK 给卸载了。这次测试可以成功执行了,也不用手动卸载 APK 了,可是,命令行运行结果不够直观啊,调试太麻烦咯。

不过,这给我们提供了一个思路:能不能让 Android Studio 在执行测试之前编译最新的测试 APK 并安装到设备中呢?

研究半天,发现了 Gradle 中有这么一个命令: installDebugAndroidTest。该命令正好符合我们的需求。


installDebugAndroidTest task

那么,如何将该命令整合进来呢?还得从 Android Studio 配置入手啦,再次打开配置界面,仔细研究各项配置,终于发现了新大陆:


Before launch

如图所示,该选项似乎可以在测试执行前做点什么,点击 “+” 在弹出菜单中赫然发现了Run Gradle Task 选项:


Run Gradle task

抓紧点开看一下,在弹出的对话框中,Gradle project 选择 ”:app“,Task 选择 “installDebugAndroidTest”,然后点击 OK 完成配置。


选择 project

选择 task

此时,配置页面上已经发生了变化,如下图:


task 已添加进来

这样,我们再次执行此测试用例就不会提示方法找不到的错误了。

但是,细心的你可能已经注意到了此方法的一个缺陷:需要先执行一次该测试,失败后去修改它的配置,修改完毕后再次执行该测试才会成功。这也不比卸载 APK 简单到哪里去,不符合我们的预期,但是已经离目标很近了哦!

再次打开配置页,找到左边的 Defaults 标签并展开,发现有一个 Android Tests 子标签,如图:


修改默认配置

在这里重复上面添加 Gradle Task 的步骤,然后保存配置。

让我们再添加一个测试用例验证此方案是否可行:

public void testConquer() {
    assertTrue(true);
}

Yes! 万事大吉啦~~


完事大吉

至此,问题解决完毕

(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容