如何测试Android库项目

Lil*_*ily 96 junit android apk

我正在编写一个基于Android Bitmap类(称为AndroindLib)的Android库项目,该类仅包含实用程序类(无活动).我尝试使用Android JUnit测试它,但它一直在抱怨无法找到AnroidLib.apk

单元测试Android库项目的正确方法是什么?

Com*_*are 75

引用文档:

"有两种建议的方法可以在库项目中设置代码和资源的测试:

  • 您可以设置一个测试项目来检测依赖于库项目的应用程序项目.然后,您可以为项目添加测试以获取特定于库的功能.

  • 您可以设置依赖于库的标准应用程序项目,并将检测项放入该项目中.这使您可以创建一个包含测试/仪器和要测试的代码的自包含项目."

  • 所以你基本上所要做的就是将库添加到测试项目中并测试测试项目. (27认同)
  • 不确定是否有其他人已经取得了这些建议的成功,但我没有.首先尝试第二个解决方案,当我尝试在Eclipse中运行时,我得到以下内容:<ProjectName>未指定android.test.InstrumentationTestRunner检测或未在其AndroidManifest.xml中声明uses-library android.test.runner.尽管事实上我在我的Manifest中添加了instrumentation和uses-library元素. (4认同)
  • 得到了第二个(并且首选的方式).将manifest-library和instrumentation元素放在清单中的正确位置非常重要.instrumentation元素是根清单元素的子元素,uses-library元素是application元素的子元素.我将uses-library放在manifest元素下,并在尝试运行测试时以上面的错误消息结束. (2认同)

小智 17

在您的测试项目中,只需更改包名称,使其与库的包相同.例如,您有一个包的包"com.example.lib".创建一个针对您的库的测试项目.在清单文件中,您将看到package="com.example.lib.test",和targetPackage="com.example.lib".只需将包从"com.example.lib.test"更改为"com.example.lib"(保持targetPackage原样).

此外,请确保该库参考您的测试项目不是在Java构建路径,但作为一个平常的Android库:在Eclipse中必须显示为库Project->Properties->Android选项卡,但没有Project->Properties->Java Build Path标签.

然后运行测试.


小智 13

http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/帮助描述在CommonsWare的回答中实现第二个建议所需的过程


Avi*_*lio 5

根据文档

测试库模块与测试应用程序相同。主要区别在于库及其依赖项会自动包含为测试 APK 的依赖项。这意味着测试 APK 不仅包括它自己的代码,还包括库的 AAR 及其所有依赖项。由于没有单独的“被测应用”,androidTest 任务仅安装(和卸载)测试 APK。合并多个清单文件时,Gradle 遵循默认优先级顺序,并将库的清单合并到测试 APK 的主清单中。