Android Espresso UI 测试中 @Rule 的用途是什么?

What is the purpose of @Rule in Android Espresso UI Test?

新手 Android 使用 Espresso 进行单元测试,在 @Rule 下,创建成员变量的目的是什么?变量的名称重要吗?我知道我需要告诉测试单元我正在测试哪个 activity(或服务,class),但是变量及其范围是否在我需要关心的任何地方使用?

    @Rule
    public ActivityTestRule<MenuActivity> mActivityTestRule = new ActivityTestRule<>(MenuActivity.class);

在使用 Espresso 测试 Android UI 进行更多练习和研究后,获得了 @Rule 变量的许多用例。其中包括测试空闲资源(将发生异步的视图和数据)。使用 ActivityTestRule 对象(例如 mActivityTestRule),我可以引用资源,在 class 中触发带有 @VisibleForTesting 标签的 public 方法。

例如。

// In the activity
    @VisibleForTesting
    @NonNull
    public SimpleIdlingResource getmSimpleIdlingResource()
    {
        if (mSimpleIdlingResource == null)
        {
            mSimpleIdlingResource = new SimpleIdlingResource();
        }
        return mSimpleIdlingResource;
    }

// In the Test class
    // the test is run.
    @Before
    public void registerIdlingResource() {
        mIdlingResource = mActivityTestRule.getActivity().getmSimpleIdlingResource();
    }