[英]How to write test cases for Project,Library project in Android studio
[英]How to test an Android Library Project
我正在编写一个基于 Android Bitmap 类(称为 AndroindLib)的 Android 库项目,它只包含实用程序类(无活动)。 我尝试使用 Android JUnit 对其进行测试,但它一直抱怨找不到 AnroidLib.apk
单元测试 Android 库项目的正确方法是什么?
引用文档:
“在库项目中设置代码和资源测试有两种推荐的方法:
您可以设置一个测试项目来检测依赖于库项目的应用程序项目。 然后,您可以将测试添加到项目中以获取特定于库的功能。
您可以设置依赖于库的标准应用程序项目并将检测放在该项目中。 这使您可以创建一个包含测试/仪器和要测试的代码的自包含项目。”
在您的测试项目中,只需更改包名称,使其与您的库的包相同。 例如,您有一个库,其包为"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
选项卡。
然后运行你的测试。
http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/帮助描述在CommonsWare的回答中实现第二个建议所需的过程
根据文档:
测试库模块与测试应用程序相同。 主要区别在于库及其依赖项会自动包含为测试 APK 的依赖项。 这意味着测试 APK 不仅包括它自己的代码,还包括库的 AAR 及其所有依赖项。 由于没有单独的“被测应用”,androidTest 任务仅安装(和卸载)测试 APK。 合并多个清单文件时,Gradle 遵循默认优先级顺序,并将库的清单合并到测试 APK 的主清单中。
注意:此解决方案基于使用 Eclipse Indigo (3.8.2),虽然基本原理是相同的,但对于另一个 IDE,可能需要稍微不同地实现。
我有类似的问题,我发现执行以下操作总是有效:
(注意:这些说明用于从头开始构建新的项目组。如果您已经构建了项目组的一部分,那么您可能需要修改您的项目,以便它们以相同的方式连接。 )
您应该最终得到三个与此类似的项目(Android 库、Android 测试应用程序、Android 库测试器):
你应该最终得到一个类来测试你的 Android 库,它看起来类似于:
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);
}
}
然后,您可以添加所需的任何测试。 您不需要进一步引用 Android 测试应用程序(在此示例中为“RemingtonAndroidToolsTestApp”)来运行您的测试,除非它们需要访问 Android 特定组件(例如 Assets 文件夹)。 如果您需要访问任何 Android 特定组件,您可以通过修改 Android 测试应用程序(在本例中为“RemingtonAndroidToolsTestApp”)然后通过标准 Android Junit API 提供的检测引用它来实现。 (您可以在此处阅读更多相关信息:http ://developer.android.com/tools/testing/testing_android.html )
如果您的 ulitiy 类不依赖于任何 android 特定代码,您可以只使用标准的 JUnit 单元测试。 无需使用 Android 版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.