现在有了 AndroidX 测试框架,我们可以使用 Robolectric 后端将 Espresso 测试作为单元测试运行。但是我很困惑何时使用仪器测试以及何时使用单元测试。
假设我们有两个屏幕,MovieListActivity和MovieDetailActivity。当我单击MovieListActivity中的某个项目时,该电影的详细信息将显示在MovieDetailActivity中。
现在在这种情况下,可能的单元测试可能是什么,可能的仪器测试可能是什么?
例如,我可以编写仪器测试
- 检查电影是否列出
- 点击电影进入详细画面
- 详细信息屏幕正确显示详细信息。
但是现在,这些测试也可以作为单元测试运行(因为我们使用的是 Android X 测试框架)而且速度更快,因为我们不在设备/模拟器中运行测试。那么是什么使测试符合仪器测试的条件?
如果我想同时运行单元测试和仪器测试怎么办?
由于我们使用的是 Android X 测试框架,因此可以通过将文件复制到文件夹来将相同的单元测试文件作为仪器测试运行androidTest
。这会造成重复文件,并使测试用例维护变得困难。(例如,如果我在单元test
文件夹中进行编辑,则应在androidTest
文件中进行相同的修改。)
- 有什么方法可以将测试标记为同时作为仪器测试和单元测试运行?
- 如果这是一种不好的做法,那么在使用 Android X 测试框架时应该考虑哪些最佳做法以及其他哪些最佳做法?