3

TDD 需要自动化测试,所以我想听听其他人如何在 Android 项目中应用 TDD?什么对您的团队有效/无效?你是如何自动化视觉测试的?我可以看到服务层和模型的 TDD,但是 TDD 和活动、布局的视觉变化等呢?

4

3 回答 3

3

Monkey 工具,也称为 UI/ApplicationExtracter Monkey,在识别 UI 错误和错误方面非常有用。在发布任何 android 应用程序之前针对 apk 运行它是一个好习惯。

这个怎么运作

Monkey 是一个命令行工具,您可以在任何模拟器实例或设备上运行。它将用户事件的伪随机流发送到系统中,作为对您正在开发的应用软件的压力测试。要控制它,您有一个选项列表。

这些选项使您可以控制:

  1. 基本配置:事件数
  2. 约束:对包的限制
  3. 事件类型和频率
  4. 调试选项

这是运行猴子的通用命令:

adb shell monkey [options] 

//example
adb shell monkey -p your.package.name -v 500

有关更多信息,请参阅官方 android 开发者网站上的此链接

单元测试 Android 应用的最佳实践:

ApiDemos示例应用中,您可以找到ActivityUnitTestCaseActivityInstrumentationTestCase类。

这些是用于测试 android 程序的实用程序类。

以下是参考的链接: ActivityInstrumentationTestCaseActivityUnitTestCase

android.jar包含一个用于普通旧单元测试的JUnit测试框架子集。查看ApiDemos示例,了解如何编写和运行它。

你也可以试试Robotium!Robolectric

于 2012-06-05T00:14:35.443 回答
3

查看 SDK 文档中的 Spinner/SpinnerTest 示例应用,以及记事本示例应用的测试项目。还有一个你好,测试教程。

使用 ActivityInstrumentationTestCase2,而不是 ActivityInstrumentationTestCase。

ActivityUnitTestCase 的价值有限。它在与真正的 Android 系统不太一样的测试工具中运行。AndroidInstrumentationTestCase2 为您提供更多工作。

android.test 中的所有测试用例类都是基于 Junit3,而不是 Junit4。您可以在线找到有关 Junit3 的大量文档。

android.test 测试用例类模仿“单元测试”。对于某些组件(例如 Activity),在 Android 中无法使用 Junit3 进行真正的单元测试,因为仅使用反射无法正确实例化组件类。诸如 ActivityInstrumentationTestCase2 之类的类用一些“魔法”克服了这个问题。我认为它们是与 Junit3 的 TestCase 非常相似的单元测试类。它们被称为“功能测试”,因为单元测试不应该具有外部依赖项,并且 Android 活动(例如)需要 Android 系统。我认为这是吹毛求疵,但无论如何...

步骤:首先在 POJO(Plain Ol' J--- Objects)中定义尽可能多的内容。在单元测试中测试那些。测试它们与功能测试框架(如 Robotium)的交互。对任何不是 Android 对象的东西使用模拟。

从那里,使用来自 android.test.mock 的存根 Android 对象和您自己的存根来测试 Android 对象。最后,当一切都设置好后,使用 Android 测试用例来测试“框架”。

模拟 Android 对象不容易实现,这就是为什么 android.test 和 android.test.mock 中的“模拟”实际上是存根。

于 2012-06-05T02:18:33.950 回答
1

应用TDD for android, Android Testing Codelab对你很有帮助。在进行 TDD 之前,您需要应用良好的架构模式,例如 MVP、MVVP。因此,您将能够从您的活动和片段中提取更多代码。对于活动、布局的视觉更改等,您可以在代码实验室中查看第七点。他们使用 Espresso 为 Activity 和视觉布局测试做 TDD。我试过了,对我很有帮助。

奖励:检查清洁架构

于 2016-01-09T05:19:44.450 回答