【发布时间】:2020-08-10 02:07:38
【问题描述】:
现在有了 AndroidX 测试框架,我们可以使用 Robolectric 后端将 Espresso 测试作为单元测试运行。但是我很困惑何时使用仪器测试以及何时使用单元测试。
假设我们有两个屏幕,MovieListActivity 和 MovieDetailActivity。当我单击 MovieListActivity 中的某个项目时,该电影的详细信息将显示在 MovieDetailActivity 中。
现在在这种情况下,可能的单元测试是什么?可能的仪器测试是什么?
例如,我可以编写仪器测试
- 检查电影是否在列表中
- 点击影片进入详细画面
- 详细信息屏幕正确显示详细信息。
但现在,这些测试也可以作为单元测试运行(因为我们使用的是 Android X 测试框架)而且速度更快,因为我们不在设备/模拟器中运行测试。那么是什么使测试符合仪器测试的条件?
如果我想同时运行单元测试和仪器测试怎么办?
由于我们使用的是 Android X 测试框架,因此可以通过将文件复制到 androidTest 文件夹来将相同的单元测试文件作为仪器测试运行。这会造成重复文件,并使测试用例维护变得困难。 (例如,如果我在单元test 文件夹中进行编辑,则应在androidTest 文件中进行相同的修改。)
- 有什么方法可以将测试标记为同时作为仪器测试和单元测试运行?
- 如果这是一种不好的做法,最佳做法是什么,其他最佳做法应该是什么 使用 Android X 测试框架时是否考虑过?
【问题讨论】:
-
简单的答案:当你不需要使用 Android API 时,你会使用单元测试,但是当你需要使用 Android API 时,比如操作活动、小部件、
TextView、EditText.. 你必须在androidTest包下使用仪器测试 -
@Zain 简单明了的回答!
-
@Zain 是的,这是有道理的,但我要问的是,当涉及到
AndroidX Test Framework和Robolectric时,应该在什么基础上选择测试类型?
标签: android unit-testing testing robolectric androidx-test