gpt4 book ai didi

安卓 Espresso : Wait for Activity to finish/start

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:55 25 4
gpt4 key购买 nike

是否有使用 Espresso 等待特定 Activity 完成或开始的规范解决方案?

我有一个显示几秒钟的 SplashActivity,然后是 MainActivity。我希望 Espresso 与 MainActivity 交互,而不是与 SplashActivity 交互,但我似乎找不到任何关于等待这种情况的信息。

我能找到的最接近的东西是提到空闲资源,但我不清楚我将如何在这里使用它来等待 Activity 。

最佳答案

我猜你的 splash activity 正在执行一些初始化。

如果是这种情况,我的建议是定义某种监听器模式,以便能够在初始化完成时获得回调。然后,您可以使用 IdlingResource 让 Espresso 等待初始化。

注意:以下不是完整的代码,但旨在为您提供如何操作的提示:

public class SplashIdlingResource implements IdlingResource, YourApplicationInitListener {

// volatile because can be set by a different
// thread than the test runner: the one calling back
private volatile boolean mIsInitialized;

private ResourceCallback mCallback;

public SplashIdlingResource() {
YourApplication application = // retrieve your Application object
mIsInitialized = application.isInitialized();
if (!mIsInitialized) {
application.addInitListener(this);
}
}

@Override
public String getName() {
return SplashIdlingResource.class.getName();
}

@Override
public boolean isIdleNow() {
return mIsInitialized;
}

@Override
public void registerIdleTransitionCallback(ResourceCallback callback) {
mCallback = callback;
}

@Override
public void onApplicationInitCompleted() {
m_isInitialized = true;
if (m_callback != null) {
m_callback.onTransitionToIdle();
}
}
}

其中 onApplicationInitCompleted() 是您定义的回调,必须在 Splash Activity 完成初始化时调用。

最后,通过在测试设置中调用 Espresso.registerIdlingResource 向 Espresso 注册这个新的 IdlingResource。

关于安卓 Espresso : Wait for Activity to finish/start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24145655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com