您的浏览器不支持CSS3,建议使用Firfox、Chrome等浏览器,以取得最佳显示效果

Android单元测试“Unable to find instrumentation info for: ComponentInfo{} Empty Test Suite”的解决思路

Android 1,522℃ 0 2年前 (2016-02-15)

最近在入门学习Android测试,感觉对于入门来说,最艰难的大概就是配置环境了,出现问题了完全没有思路,网上找了很多资料,说法各不相同,也经常不能解决问题。

对于新创建的工程,如果默认使用的gradle插件版本就在1.1.0以上,默认就可以支持单元测试,最顺利的情况下,几乎什么都不需要配置就能直接运行测试。但是不顺利的时候,各种奇怪的报错都会发生。

在我终于搞清了单元测试的各种配置后,开始尝试对已有的工程做单元测试。原有的工程用的gradle插件是1.0.0,手动将其修改成了1.1.0,gradle同步时没有报错,原有项目能正常编译。而运行测试时,测试方法并没有被执行,总是提示如下:

  1. No tests were found
  2. Running tests
  3. Test running started
  4. Test running failed: Unable to find instrumentation info for: ComponentInfo{***/android.test.InstrumentationTestRunner}
  5. Empty Test Suite.

网上找了各种解决方案,但是回答基本上都是针对还没搞清单元测试基本写法和配置的情况。例如下面这些资料可供参考。

http://stackoverflow.com/questions/14381694/why-is-the-android-test-runner-reporting-empty-test-suite

http://mtdevuk.com/2014/10/07/solution-for-test-running-failed-unable-to-find-instrumentation-info-for-componentinfo-com-google-android-apps-common-testing-testrunner-googleinstrumentationtestrunner/

https://testerhome.com/topics/2098

http://blog.csdn.net/wsm6591289/article/details/7204524

http://stackoverflow.com/questions/16591504/android-studio-import-existing-unit-tests-unable-to-find-instrumentation-info

http://www.cnblogs.com/dtest/p/4142304.html

分析了自己遇到的情况,两个工程中我所知道的所有配置都一样,gradle插件版本、Build Variants、文件夹结构、测试代码,唯一我所知道的不同点,就是一个工程创建的时候就用的1.2.3版本gradle插件,之后被我改成1.1.0,而另一个工程则是从1.0.0被改成1.1.0。

于是我怀疑插件版本除了在build.gradle中修改,对项目的其他地方也有影响。于是尝试将可以运行单元测试、项目名称结构都完全一样的新建工程中的非代码文件,包括目录下的gradlew、gradlew.bat、local.properties等,替换到不能运行单元测试的已有项目中……但是并没有什么效果,似乎有时候能运行,有时候又不行了。

研究了很长时间,尝试了很多方法,最后终于在StackOverflow的一个很不起眼的地方找到了解答。
http://stackoverflow.com/questions/16591504/android-studio-import-existing-unit-tests-unable-to-find-instrumentation-info

自己创建的工程使用的Module Build Variants是默认的debug,而已有的项目选择的是gradle中配置的*Develop,从而导致不能运行。

之后进行对比可以发现,如果使用的不是Debug,而是例如Release,Android Studio右下角显示的Task只有一个assembleRelease

如果使用Debug,就会显示assembleDebug和assembleDebugAndroidTest两项。

在Run窗口可以看到,先后安装了两个APK,前一个是被测试的APK,后者则是Test Runner。

  1. Testing started at 下午10:43 ...
  2. Installing com.jzj1993.unittest
  3. DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.jzj1993.unittest"
  4. pkg: /data/local/tmp/com.jzj1993.unittest
  5. Success
  6. Uploading file
  7. local path: /Users/jzj/AndroidStudio/UnitTest/app/build/outputs/apk/app-debug-androidTest-unaligned.apk
  8. remote path: /data/local/tmp/com.jzj1993.unittest.test
  9. Installing com.jzj1993.unittest.test
  10. DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/com.jzj1993.unittest.test"
  11. pkg: /data/local/tmp/com.jzj1993.unittest.test
  12. Success
  13. Running tests
  14. Test running startedFinish

来自为知笔记(Wiz)

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

0

暂无评论

评论前:需填写以下信息,或 登录

用户登录

忘记密码?