是否可以禁用Toast或等待toast在测试

时间:2015-08-13 20:52:02

标签: android unit-testing android-espresso android-toast

我正在使用Espresso测试应用。我有一个问题是有可能等到目前没有吐司出现。我在我的应用程序中有很多不同的吐司,但是在测试时我遇到了问题,因为据我所知,焦点已经转向吐司,我正在获得另一个视图层次结构,正如我在错误日志中看到的那样。 /> 所以我的问题是可以隐藏所有(系统范围内的root访问权限)或只是等到屏幕上有任何祝酒词,或者是否可以手动将焦点设置到活动视图层次结构。
如果对这个问题有任何帮助,我将不胜感激 谢谢。

P.S。在我的应用程序中的某个地方直接禁用Toast不是一个选项,因为它为应用程序带来了一些额外的逻辑,这只是在测试时才需要。

1 个答案:

答案 0 :(得分:1)

我还没有找到任何完美的解决方案,但最好是让mToast成员变量可见以进行测试,并使用它来取消@After中的任何活动吐司,如下所示:< / p>

显示toast(被测活动的生产代码)时:

@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
Toast mToast;

private void showToast(final String text) {
    mToast = Toast.makeText(this, text, Toast.LENGTH_LONG);
    mToast.show();
}

测试代码(与测试代码在同一个包中):

    @After
    public void tearDown() {
        // Remove any toast message that is still shown:
        Toast toast = mActivityRule.getActivity().mToast;
        if (toast != null) {
            toast.cancel();
        }
    }

要求您稍微更改生产代码,但如果您在其他地方使用成员变量,则在最新版本的Android Studio中使用@VisibleForTesting会出错。