Android 单元测试的正确方法

The correct approach to Android Unit Testing

我知道这对所有 android 开发人员来说都是一个乏味的话题。但是 Android 测试的正确方法到底是什么?

这是我能想象的。

70% 单元测试(JUnit 测试所有业务逻辑、网络层、数据库层等...)

20% 集成测试(也许针对模拟服务器进行测试?主要是测试 API 结果?)

10% UI 测试(模拟除 UI 交互之外的任何其他内容,很可能是 Mockito+Espresso)

这是其他人都在遵循的还是另一种模式?

提前致谢!

这个问题和我的回答,与 Android 没有任何关系,但这是一件好事。

我稍微修改了你的假设,但原理是一样的。

  • 70% 单元测试(JUnit 测试所有业务逻辑。)

  • 20% 集成测试(网络层、数据库层等,真实服务器)

  • 10% UI 测试(UI 工作流程 + 手动测试)

应该是70%吗? 80%? 85%?没关系。关键是比例。您希望大部分测试是 fast, isolated in memory tests。如果您确实与数据库交互,您只是想知道您的查询有效。更新查询是否真的更新了正确的实体?最后,您检查 UI 是否按预期工作。在这个级别上显示什么并不重要。只要在用户未登录时显示登录屏幕即可。

这通常被称为 Test Pyramid,这就是您所描述的,只是减去显式比率。