现在有了AndroidX测试框架,我们可以使用Robolectric后端将Espresso测试作为单元测试运行。但是对于何时使用仪器测试和何时使用单元测试感到困惑。
假设我们有两个屏幕,MovieListActivity和MovieDetailActivity。当我单击MovieListActivity中的项目时,该电影的详细信息将显示在MovieDetailActivity中。
现在,在这种情况下,可能的单元测试和可能的仪器测试是什么?
例如,我可以将仪器测试写到
但是现在,这些测试也可以作为单元测试运行(因为我们使用的是Android X测试框架),而且它更快,因为我们不在设备/仿真器中运行测试。那么,什么使测试有资格进行仪器测试呢?
如果我想同时进行单元测试和仪器测试,该怎么办?
[由于我们使用的是Android X测试框架,因此可以通过将相同的单元测试文件复制到androidTest
文件夹来作为工具测试来运行。这使文件重复,并使测试用例难以维护。 (例如,如果我在单元test
文件夹中进行编辑,则应该在androidTest
文件中进行相同的修改。)
Espresso是适用于Android应用程序的自动化UI测试框架。它们是用Java编写的脚本,用于在模拟环境或物理设备上模拟与应用程序运行时的交互。
Espresso测试是“工具化的”,这意味着测试可以使用有关应用程序的内部工作(上下文),例如对象名称,运行时变量和其他符号信息。
单元测试专注于代码的一小部分(即类级别的方法),并提供基本验证,以确保代码按预期运行。 Espresso测试提供了UI是否按预期工作的基本验证。
排序:如果要测试任何逻辑,可以将单元测试用于Ui测试,可以使用浓缩咖啡。