gpt4 book ai didi

java - Espresso + Junit4 如何在需要登录的其他屏幕上进行测试

转载 作者:行者123 更新时间:2023-11-29 02:38:39 25 4
gpt4 key购买 nike

几天前我开始学习 Espresso,发现它非常适合测试,但我遇到了一个问题。

我想测试“主屏幕”,但在移动到主屏幕之前用户应该登录,因为我从服务器获取许多详细信息并存储在我的共享首选项中。

于是我找到了可以使用的“@Before”注解。

但是@Before 注解的缺点是它会在每个测试方法之前执行。如果我写了四个测试用例,那么它将执行四次。不应该这样做。

然后我再次用谷歌搜索,发现可以使用“@BeforeClass”注解,它在根据给定链接 (Espresso + Junit4 - login once before running all test) 启动类(class)时调用一次

但这并没有解决我的问题,因为登录 Activity 没有在带有“@BeforeClass”注释的“below”方法中启动

@BeforeClass
public static void setUpBeforeClass() {
// do login stuff here
}

那么我应该怎么做,因为在执行主屏幕测试用例之前我需要登录信息。下面是我正在测试的代码

任何帮助他都会感激...提前致谢

@Rule
public ActivityTestRule activityRule = new ActivityTestRule<>(LoginActivity.class);

@Before
public void setUp() {
onView(withId(R.id.et_username_login))
.perform(typeText(Credentials.USERNAME), ViewActions.closeSoftKeyboard());
onView(withId(R.id.et_password_login))
.perform(typeText(Credentials.PASSWORD), ViewActions.closeSoftKeyboard());
onView(withId(R.id.btn_login)).perform(click());
}
@Test
public void onAllEventTabTest() {
onView(withId(R.id.ll_tab_1)).perform(click());
}

@Test
public void formPacketTabTest() {
onView(withId(R.id.ll_tab_2)).perform(click());
}

最佳答案

您可以通过 ActivityTestRule 选择要启动的 Activity

如果您已经登录使用其他 Activity 的规则来测试

@Rule
public final android.support.test.rule.ActivityTestRule<MainActivity> main = new ActivityTestRule<>(MainActivity.class);

它应该直接转到它而不需要登录。

关于java - Espresso + Junit4 如何在需要登录的其他屏幕上进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45606613/

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