我正在编写基于Android位图类(称为AndroindLib),其中只包含实用程序类(无活动)的Android库项目。我尝试使用Android JUnit进行测试,但它一直抱怨找不到AnroidLib.apk如何测试Android库项目
单元测试Android库项目的正确方法是什么?
我正在编写基于Android位图类(称为AndroindLib),其中只包含实用程序类(无活动)的Android库项目。我尝试使用Android JUnit进行测试,但它一直抱怨找不到AnroidLib.apk如何测试Android库项目
单元测试Android库项目的正确方法是什么?
“有一个库项目建立的代码和资源测试的两种推荐方式:
可以设置一个测试项目,仪器的应用项目取决于库项目,然后可以将项目的测试添加到项目中以获得特定于库的功能
您可以设置一个标准应用程序项目,该项目依赖于库并将其放入在该项目中进行整顿。这使您可以创建包含测试/仪器及代码来测试一个自包含的项目。”
所以基本上你所要做的就是将库添加到你的测试项目并测试测试项目。 – njzk2 2011-08-23 14:01:56
该链接不再有效,您有什么机会可以将我们指向当前的链接? – 2011-11-30 19:04:24
看起来像:http://developer.android.com/guide/developing/projects/index.html#testing – 2011-11-30 19:06:28
如果你的ulitiy类不依赖于任何android特定的代码,你可以使用标准的JUnit单元测试。无需使用Android版本。
我取决于Android位图类... – Lily 2010-08-30 20:48:56
这不起作用,因为标准JUnit编译为标准JVM,而Android Java文件编译为Dalvik VM。 – 2013-05-14 22:40:26
http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/有助于描述实施第二个建议,在CommonsWare的回答
在所需要的过程中你测试项目只需更改软件包名称,以便与软件包的软件包名称相同 例如,您有一个软件包,其软件包为"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
标签。
然后运行你的测试。
您的想法对我有意义,因此测试的目标是自己(作为应用程序),应用程序与库链接....但我无法通过ant build或IntelliJ将它运行...当它试图安装它时,.apk(预计用于被测试的应用程序)不存在,因为它正在被编译为“test/bin /.- debug.apk” – 2013-11-24 16:55:37
我通过更改软件包清单中的测试项目的名称(以及被测试的包 - 应该是相同的)与库项目的包名称不一致,以及在ant.properties文件中删除对目标测试项目的引用。 – 2013-11-24 17:44:25
我认为这是比接受的更好的答案,只是回声的文档 - 恕我直言。 – 2013-11-24 17:49:01
注意:此解决方案基于使用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的组件(例如Assets文件夹),否则您将不需要引用Android Test App(本例中的“RemingtonAndroidToolsTestApp”)来进一步运行测试。如果您需要访问任何Android特定组件,您可以通过修改Android测试应用程序(本例中为“RemingtonAndroidToolsTestApp”),然后通过标准Android Junit API提供的工具来引用它。(你可以阅读更多有关在这里:http://developer.android.com/tools/testing/testing_android.html)
测试库模块相同测试的应用程序。 主要区别在于库及其依赖项自动包含为测试APK的依赖关系。这意味着测试APK不仅包含自己的代码,还包含库的AAR及其所有依赖项。由于没有单独的“正在测试的应用程序”,因此androidTest任务仅安装(并卸载)测试APK。 合并多个清单文件时,Gradle遵循默认优先级顺序并将库的清单合并到测试APK的主清单中。
哪个任务运行测试? gradle测试,还是gradle androidTest? androidTest不是一项任务。 – Sunnyday 2018-02-23 00:00:58
或(**无耻插件警报**)你可以使用我创建的项目:Android库测试线束(我喜欢称之为“Alt H”)。它可以作为一个git回购:https://gitorious.org/alth该项目仍在开发中,文档有点稀疏,所以如果您有任何问题,请随时打我。 – i41 2013-09-27 15:42:32