java - Android 开发和 TDD
问题描述
有谁知道如何使用 Android 开发进行 TDD(测试驱动开发)的好指南?我对您在创建活动测试之前/期间应该拥有的心态感兴趣。
我之前只有一项任务必须通过 TDD(保龄球游戏)完成。它给了我洞察力,但 Android 开发与我所做的相去甚远。
我开始做一个新的 SearchActivity,我将使用抽象 BaseExpandedListAdapter 类作为我的自定义适配器类 ExpandableProfileListAdapterTest。
现在,例如,某人应该如何测试 getGroupView 和 getChildView 方法?
解决方案
Android 官方文档对于为 Android 代码生成测试非常有用:https ://developer.android.com/training/testing/fundamentals
测试驱动开发对于 Android 与任何其他类型的开发基本相同,您首先编写测试并生成源代码,但它有一些不同之处,因为必须模拟某些要测试的系统以防止需要触发建立一个模拟器来测试应用程序的基于交互的部分。
Android 中的测试由测试的“金字塔”组成,包括单元测试、集成测试和 UI 测试。这些是分开的,因为即使您可以编写一个 UI 方法来简单地在屏幕上放置一个简单到可以进行单元测试的按钮,但如果您想断言该按钮已放置,则它无法成功进行单元测试,因为它必须在 Android 模拟器上运行(因此是 UI 测试)。要成功地在单元测试和集成测试之间建立清晰的界限,请确保始终将可测试的功能代码重构并移动到它们自己的方法中,而不是将其包含在其他基于 UI 的方法中(例如应用程序的 onCreate) .
幸运的是,有很多解决方案可以测试 Android 的所有这些部分。这个指向包含上图的文章的链接包含测试框架的链接,例如 Mockito、Robolectric 和 Espresso,用于不同级别的 Android 测试。
推荐阅读
- php - 使用选择列表中的值操作数组的正确方法是什么?
- javascript - 每次状态更改时渲染 div,使用 setinterval
- .net - 使用 Google Calendar .Net SDK 从 Google 日历活动中删除 Google Meet 链接
- mapbox - MapBox:如何使用折线捕获地图的位图
- google-bigquery - 如何将数据从按年/月/日分区的存储桶中加载到 bigquery
- php - Twig如何仅在分页的第一页显示文本
- apache-spark - Glue 书签倒带功能是否会从接收器中删除数据?
- python - 确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列
- visual-studio-code - VSCode 使用宏运行脚本
- android - 把replaceFragment放到onBindViewHolder里面对吗?