gpt4 book ai didi

android-espresso - 如何使断言等待 IdlingResource 断言

转载 作者:行者123 更新时间:2023-12-05 01:02:35 32 4
gpt4 key购买 nike

我想使用空闲资源,因为我在我的应用程序中使用 RxJava 和 EventBus,有时我的测试会失败(我认为这是因为同步)。

依赖关系:

androidTestCompile 'com.android.support.test:runner:0.4'
androidTestCompile 'com.android.support.test:rules:0.4'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.1'
androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.1') {
exclude group: 'com.android.support', module: 'appcompat'
exclude group: 'com.android.support', module: 'support-v4'
exclude module: 'recyclerview-v7'
}
androidTestCompile 'junit:junit:4.12'
androidTestCompile 'com.squareup.retrofit:retrofit-mock:1.9.0'
androidTestCompile 'com.squareup.assertj:assertj-android:1.1.0'
androidTestCompile 'com.squareup.spoon:spoon-client:1.2.0'

测试失败:

@RunWith(AndroidJUnit4.class)
@SmallTest
public class PushNotificationTests {

@Test
public void testSomething(){

// do things...
MyIdlingResource eventBusIdlingResource = new MyIdlingResource();
registerIdlingResources(eventBusIdlingResource);

Order.Status status = Order.getCurrentObservable().toBlocking().first().getStatus();
assertThat(status).isEqualTo(Order.Status.PROGRESS); // Fail,

unregisterIdlingResources(eventBusIdlingResource)
}

}

尝试但不工作:

@RunWith(AndroidJUnit4.class)
@SmallTest
public class PushNotificationTests {

@Test
public void testSomething(){

// do things...

MyIdlingResource eventBusIdlingResource = new MyIdlingResource();
registerIdlingResources(eventBusIdlingResource);

// Wait manually?
int sleeps = 0;
while(!eventBusIdlingResource.isIdleNow() || sleeps < 10){
sleep(100);
sleeps++;
}

Order.Status status = Order.getCurrentObservable().toBlocking().first().getStatus();
assertThat(status).isEqualTo(Order.Status.PROGRESS); // Fail,

unregisterIdlingResources(eventBusIdlingResource)
}

}

最佳答案

在检查 UI 状态之前,我有同样的要求强制 Espresso 处于空闲状态。对我有用的是添加一个始终为真的 View 断言,因为 Espresso 在执行它之前会等待空闲状态。

onView(isRoot()).check(matches(anything()));

关于android-espresso - 如何使断言等待 IdlingResource 断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32979964/

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