isIdleNow() 正在返回 true,但从未发送过指示资源已从繁忙状态转换为空闲状态的消息
isIdleNow() is returning true, but a message indicating that the resource has transitioned from busy to idle was never sent
我正尝试在 Espresso 中为我的 Android 应用程序编写测试,但我遇到了 Idle 问题。如果我的 isIdleNow()
看起来像这样
public boolean isIdleNow() {
return true;
}
然后消息发送。但是,如果 IsIdleNow()
必须等待某些条件(它在开始时 return 不成立),则不会发送消息。
我的代码:
public class ImageViewIdlingResource implements IdlingResource {
private ImageView imageView=null;
ResourceCallback callback;
public ImageViewIdlingResource(ImageView imageView2){
this.imageView = imageView2;
}
@Override
public String getName() {
return "ImageViewIdlingResource";
}
@Override
public boolean isIdleNow() {
return !imageView.isShown();
}
@Override
public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {
this.callback = resourceCallback;
}}
和测试:
public class EspressoTest extends ActivityInstrumentationTestCase2<SplashScreen> {
public EspressoTest() {
super(SplashScreen.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
getActivity();
ImageViewIdlingResource imageResource = new ImageViewIdlingResource((ImageView)getActivity().findViewById(R.id.splashscreen_icon));
Espresso.registerIdlingResources(imageResource);
}
public void testListGoesOverTheFold() throws InterruptedException {
onView(withId(R.id.button)).check(matches(isDisplayed()));
}}
你必须通知回调你正在进入空闲状态,类似这样:
@Override
public boolean isIdleNow() {
if (!imageView.isShown()){
if (callback != null) {
callback.onTransitionToIdle();
}
return true;
}
return false;
}
我正尝试在 Espresso 中为我的 Android 应用程序编写测试,但我遇到了 Idle 问题。如果我的 isIdleNow()
看起来像这样
public boolean isIdleNow() {
return true;
}
然后消息发送。但是,如果 IsIdleNow()
必须等待某些条件(它在开始时 return 不成立),则不会发送消息。
我的代码:
public class ImageViewIdlingResource implements IdlingResource {
private ImageView imageView=null;
ResourceCallback callback;
public ImageViewIdlingResource(ImageView imageView2){
this.imageView = imageView2;
}
@Override
public String getName() {
return "ImageViewIdlingResource";
}
@Override
public boolean isIdleNow() {
return !imageView.isShown();
}
@Override
public void registerIdleTransitionCallback(ResourceCallback resourceCallback) {
this.callback = resourceCallback;
}}
和测试:
public class EspressoTest extends ActivityInstrumentationTestCase2<SplashScreen> {
public EspressoTest() {
super(SplashScreen.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
getActivity();
ImageViewIdlingResource imageResource = new ImageViewIdlingResource((ImageView)getActivity().findViewById(R.id.splashscreen_icon));
Espresso.registerIdlingResources(imageResource);
}
public void testListGoesOverTheFold() throws InterruptedException {
onView(withId(R.id.button)).check(matches(isDisplayed()));
}}
你必须通知回调你正在进入空闲状态,类似这样:
@Override
public boolean isIdleNow() {
if (!imageView.isShown()){
if (callback != null) {
callback.onTransitionToIdle();
}
return true;
}
return false;
}