gpt4 book ai didi

android - 如何让 espresso 等待启动画面完成然后开始测试

转载 作者:行者123 更新时间:2023-12-04 16:10:42 26 4
gpt4 key购买 nike

您好,我必须为我的 Activity 编写一个测试,但在此之前 Activity一个 SplashActivity必须先运行 2500 毫秒。

我的测试课:

@RunWith(AndroidJUnit4.class)
public class GuestActivityTest{

@Rule
public ActivityTestRule<GuestActivity> mActivityTestRule = new ActivityTestRule<GuestActivity>(GuestActivity.class, true, false){
@Override
protected void afterActivityLaunched() {
super.afterActivityLaunched();
}
};



@Test
public void goToMenuActivity() {
onView(withId(R.id.button_log_in)).perform(typeText("Works"));
onView(withId(R.id.menu_btn)).perform(click());
}
}

每次测试都会崩溃,因为 SplashActivity 中的初始化尚未执行。如何让 espresso 知道 Activity已经加载或等待 SplashActivity先完成?

最佳答案

正如 Shurov 建议的那样,我认为要走的路是使用 Espresso 空闲资源。为此,首先添加依赖项

implementation "androidx.test.espresso:espresso-idling-resource:3.3.0"
然后将此类添加到您的项目中
object EspressoIdlingResource {

private val CLASS_NAME = "EspressoIdlingResource"

private const val RESOURCE = "GLOBAL"

@JvmField val countingIdlingResource = CountingIdlingResource(RESOURCE)

fun increment() {
countingIdlingResource.increment()
}

fun decrement() {
if (!countingIdlingResource.isIdleNow) {
countingIdlingResource.decrement()
}
}
}
完成后,在您启动初始 Activity 时添加 EspressoIdlingResource.increment(),当您离开它时添加 EspressoIdlingResource.decreasment()。
然后将其添加到您的测试类中。
@Before
fun setUp() {
IdlingRegistry.getInstance().register(EspressoIdlingResource.countingIdlingResource)
}

@After
fun tearDown() {
IdlingRegistry.getInstance().unregister(EspressoIdlingResource.countingIdlingResource)
}
在此之后,您的测试应该会自动等待您的 SplashActivity 完成。
这是关于主题 https://developer.android.com/training/testing/espresso/idling-resource 的 Google 页面.

关于android - 如何让 espresso 等待启动画面完成然后开始测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090013/

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