试图理解android测试

Posted

技术标签:

【中文标题】试图理解android测试【英文标题】:Trying to understand android testing 【发布时间】:2011-08-28 15:25:07 【问题描述】:

我是一名长期的 Java 开发人员,拥有多年的 Java EE、Ant、Maven、单元测试、模拟等经验。我目前正在使用 gradle 构建 android 应用程序,并正在考虑对它们进行单元测试。它让我把头发扯掉了!

我的阅读表明,要测试一个应用程序,我必须在测试目录中创建另一个应用程序。但我不确定这个嵌入式应用程序如何看到主要的应用程序类。我认为谷歌想出这个是因为与不同的清单有关。我不知道为什么。

如果不使用这个嵌入式应用系统,我已经能够通过在 APK 中包含测试类和主类、将检测声明添加到清单、部署它并运行测试运行程序来运行单元测试。但是我不想用应用程序类编译测试类并包括所有依赖项,所以这不是一个真正的选择,我不确定清单更改的效果,因为我找不到任何关于效果的文档.

遵循 maven 构建系统的 gradle 不理解这些。另请注意,android 方式似乎是嵌入式子项目(测试)依赖于主父项目,这与 gradle 和 maven 完全相反。

另一种选择似乎是将测试项目分开,使其完全位于应用项目之外。但实际上,我想使用与 maven 类似的约定,只需将测试与测试资源中的清单一起放在单独的目录中。

有没有人设法在模拟器上按照更类似于 maven 的目录结构运行单元测试?

【问题讨论】:

【参考方案1】:

你可以试试Robotium。它为更好的测试用例提供了许多功能。你可以看看here。

【讨论】:

【参考方案2】:

您必须在模拟器中运行单元测试吗?是不是太慢了?我一直在使用 robolectric (http://pivotal.github.com/robolectric/),它创建了类似于模拟的阴影对象。我使用 progaurd (http://proguard.sourceforge.net/) 去除发布版本的测试。

【讨论】:

我快速浏览了 roboletric,但我更喜欢在尽可能靠近设备的地方运行测试。特别是我感兴趣的测试是 inetegration/functional/BDD 测试。我可以作为纯 JUnit 运行的单元。

以上是关于试图理解android测试的主要内容,如果未能解决你的问题,请参考以下文章

Android架构组件GithubBrowserSample单元测试理解

移动端测试===Android内存管理: 理解App的PSS

如何理解,使用Android LogCat以及通过Monkey进行压力测试

理解并测试什么是Android事件分发

理解并测试什么是Android事件分发

Android LocationServices - 如何测试 onConnectionSuspended 回调