gpt4 book ai didi

java - Espresso : What are the advantages/disadvantages of having multiple tests vs. 一个用户旅程?

转载 作者:行者123 更新时间:2023-12-02 11:41:46 26 4
gpt4 key购买 nike

举个例子,我有一个应用程序,它的 MainActivity 有一个按钮,还有一个 NextActivity,它有一个用垂直列表中的整数填充的 RecyclerView。我可以编写以下单独的 Espresso 测试:

测试1:

public class MainScreenTest {

@Rule
public IntentsTestRule<MainActivity> mainActivityRule =
new IntentsTestRule<>(MainActivity.class);

@Test
public void shouldOpenNextActivityOnClick() {
onView(withId(R.id.btn)).check(matches(withText("foo")));

onView(withId(R.id.btn))
.perform(click());

intended(hasComponent("com.example.androidplayground.NextActivity"));
}

}

测试2:

public class NextScreenTest {

@Rule
public ActivityTestRule<NextActivity> nextActivityRule =
new ActivityTestRule<>(NextActivity.class);

@Test
public void shouldScrollToItem() throws Exception {
int position = 15;
onView(withId(R.id.rv))
.perform(RecyclerViewActions.scrollToPosition(position));

onView(withText(position)).check(matches(isDisplayed()));
}
}

或者,我可以编写一个涵盖两者的测试:

public class UserJourneyTest {

@Rule
public ActivityTestRule<MainActivity> mainActivityRule =
new ActivityTestRule<MainActivity>(MainActivity.class);

@Test
public void userJourney() {
onView(withId(R.id.btn)).check(matches(withText("foo")));

onView(withId(R.id.btn))
.perform(click());

int position = 15;
onView(withId(R.id.rv))
.perform(RecyclerViewActions.scrollToPosition(position));

onView(withText(position)).check(matches(isDisplayed()));
}

}

一种方法比另一种方法更好吗?通过一次用户旅程而不是多次单独的测试,我是否会获得性能的显着提升?

最佳答案

我的观点是,如果您通过单击按钮从 MainActivity 导航到 NextActivity,您不会想编写直接启动 NextActivity 的测试。当然,espresso 允许这样做,但如果从 MainActivity 有一些数据传递到 NextActivity,那么如果您的测试直接启动 NextActivity,您将不会获得这些数据。

我想说,首先通过编写 UI 自动化测试,您想要模拟用户的行为。所以我会选择您上面发布的第三个选项,UserJourneyTest.class

就您而言,这不是性能问题,而是正确测试的问题。

关于java - Espresso : What are the advantages/disadvantages of having multiple tests vs. 一个用户旅程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48491089/

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