java - 如何在 android 测试中监听 Android ActivityTestRule 的 beforeActivityLaunched 方法

标签 java android junit android-testing android-espresso

我怎么听ActivityTestRule's beforeActivityLaunched() android测试中的方法。

我的解决方法是创建自定义 ActivityTestRule 并在构造函数上提供回调。这是一种不好的做法吗?同样的方法也可以监听 ActivityTestRule 构造方法。

这是我的代码:

public class CustomActivityTestRule<A extends Activity> extends ActivityTestRule<A> {

    public interface onBeforeListener{
        void onBefore(String message);
    }

    private onBeforeListener listener;

    public CustomActivityTestRule(Class<A> activityClass, onBeforeListener listener) {
        super(activityClass);
    }

    @Override
    protected void beforeActivityLaunched() {
        super.beforeActivityLaunched();
        listener.onBefore("before activity launch");
    }
}

在 android 测试类中,我可以做类似的事情:

@Rule public CustomActivityTestRule<MainActivity> mainActivityActivityTestRule = new
            CustomActivityTestRule<MainActivity>(MainActivity.class, new CustomActivityTestRule.onBeforeListener() {
        @Override
        public void onBefore(String message) {
            //do something before activity starts
        }
    });

它能够在 junit 规则实例化上执行某些操作的方式相同。有没有其他方法可以监听 junit 测试规则实例化?

最佳答案

您可以覆盖 beforeActivityLaunched 而无需创建新类。

我在测试中使用了以下内容:

@Rule
public ActivityTestRule<MainActivity> mainActivityActivityTestRule = new ActivityTestRule<MainActivity>(MainActivity.class) {

    @Override
    protected void beforeActivityLaunched() {
        super.beforeActivityLaunched();
    }

};

关于java - 如何在 android 测试中监听 Android ActivityTestRule 的 beforeActivityLaunched 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37101241/

相关文章:

java - 在日志上看不到 cucumber 片段

java - 调用字节码类方法,java

java - 如何在 JDT TypeHierarchy 中设置区域(= java 元素集)参数?

android - 我应该设置 fragment Root View 的 ID 吗?

java - 如何在android中开发音频流应用程序?

java - 测试从数据库查询结果集中返回唯一值的方法

android - 将测试包添加到现有的 Android Studio 项目

java - 为 FtpClient 设置连接超时

java - 没有 arg 构造函数或 arg 构造函数

android - 适用于 Android 的 Paypal 应用内结算