我写安卓库项目基础上的安卓位类(称它AndroindLib)其中只包含实用程序类(不活动)。我试图进行测试使用机器JUnit,但它一直抱怨找不到AnroidLib.apk

什么是正确的方式进行单位测试安卓库项目?

有帮助吗?

解决方案

引述 该文件:

"有两个建议的方式设置了检测在代码和资源图书馆的项目:

  • 你可以设立一个试验项目,该项目的仪器应用程序项目,取决于图书馆项目。然后你可以添加测试的项目,用于图书馆的具体特点。

  • 你可以设置一个标准的应用程序项目,取决于图书馆和把仪器仪表在这一项目。这样可以创建一个自立的项目,其中包含的测试/仪器仪表和代码进行测试。"

其他提示

在您的测试项目只需更改包名称,以便它与您的库的包。 例如,您有一组包"com.example.lib"库。创建一个测试项目针对您的图书馆。在manifest文件中你会看到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标签。

然后运行你测试

的http:// WWW .paulbutcher.com / 2010/09 / Android的库项目与检验一步一步/ 有助于描述来实施CommonsWare的答案

第二个建议,需要过程

文档

测试库模块是相同的测试应用程式。 主要的区别是该库和它的依赖被自动包括作为测试APK的依赖关系。这意味着测试APK不仅包括它自己的代码,也是图书馆的AAR和所有的依赖。因为有“测试,应用程序的” androidTest任务安装(并卸载),只有测试APK没有单独的。 当合并多个清单文件,摇篮遵循缺省优先级顺序,并且合并该库的清单到测试APK的主要表现。

注: 这种解决方案的基础上使用日食靛(3.8.2)和可能必须实现的略有不同于另一个IDE虽然基本原则将是相同的。

我有类似的问题,我发现,做以下工作:

(注:这些说明是建设一个新的项目组从头开始。如果你已经建成部分的项目组,然后你可能需要修改项目使它们连接起来以同样的方式。)

  1. 创建一个图书馆项目通过检查"是图书馆"checkbox在创造。(例如安卓项目名为"RemingtonAndroidTools").
  2. 建立卓库项目,并确认它创造了一个罐子文件在站的文件夹。(例如一个罐子文件命名为"RemingtonAndroidTools.jar".)
  3. 创建一个空安卓项目进行测试的应用程序,将服务作为一个机器测试的应用程序。(例如安卓项目名为"RemingtonAndroidToolsTestApp").你将不需要修改源码或资源的试验应用项目,除非你有什么事情,必须加测试。许多事情可以进行测试,没有任何修改的安卓测试的应用程序的项目。 安卓测试的应用程序的项目之间的桥梁你的安卓图书馆项目和卓Junit项目,使测试的图书馆项目通过安卓Junit可能的。
  4. 去图书馆卡Java生成路径,为测试的应用程序的项目("RemingtonAndroidToolsTestApp"在这个例子)。
  5. 添加的罐子文件("RemingtonAndroidTools.jar"在本示例)的库项目("RemingtonAndroidTools"在本示例)通过的"加罐子..."按钮。
  6. 创建一个试验项目(例如"RemingtonAndroidToolsTester"),这将成为作为一个机器人图书馆测试和选择卓测试的应用程序的项目("RemingtonAndroidToolsTestApp"在本示例)作为目标。
  7. 去图书馆卡Java建立的道路的图书馆试项目("RemingtonAndroidToolsTester"在这个例子)。
  8. 添加的罐子文件("RemingtonAndroidTools.jar"在本示例)的库项目("RemingtonAndroidTools"在本示例)通过的"加罐子..."按钮。
  9. 找到最后一个文件夹您的包裹在测试图书馆项目("丹尼。remington.remington_android_tools_test_app.测试"),并增加一个测试等级("MainActivityTest"为例),继承ActivityInstrumentationTestCase2.
  10. 编辑的测试类("TestActivityTest"在本示例)使用的活动(例如"TestActivity")的试验程序("RemingtonAndroidToolsTestApp"在这个例子),作为参数,用于ActivityInstrumentationTestCase2.
  11. 编辑的测试类("TestActivityTest"在这个例子),并创建一个默认的构造,使得一呼吁超级(班),并通过在类的试验程序("TestActivity.class"为例)。

你应该结束了三个项目(安卓库,安卓测试的应用程序,安卓图书馆试验仪),类似于这样的:

enter image description here

enter image description here

enter image description here

你应该结束了与一流的用于测试你的安卓库,这类似于这样的:

package danny.remington.remington_android_tools_test_app.test;

import android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_android_tools_test_app.TestActivity;

/**
 * 
 */
public class TestActivityTest extends
      ActivityInstrumentationTestCase2<TestActivity> {

   public TestActivityTest() {
      super(TestActivity.class);
   }

}

然后你可以添加任何试验。你不会需要参考安卓测试的应用程序("RemingtonAndroidToolsTestApp"在这个例子)进一步运行测试,除非他们要求访问安卓特定成分(如资产的文件夹)。如果你需要访问任何具体的部件可以通过修改卓测试的应用程序("RemingtonAndroidToolsTestApp"在这个例子),然后引用它的通过仪器提供的免费Junit API。(你可以读取更多有关在这里: http://developer.android.com/tools/testing/testing_android.html)

如果您的公用事业类不依赖于任何特定的Android代码,你可以用标准的JUnit单元测试。无需使用Android版本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top