java - 测试用例(场景)——一种还是多种方法?

标签 java android testing android-espresso

我想测试我的 android 应用程序的一个用例(场景)。它应该模拟用户对应用程序的使用。编写一个测试方法和代码测试整个用例是否更好,还是我应该为每个部分创建单独的方法(在这种情况下,测试必须按特定顺序进行)?

例子:

public void test() {
    //click or button (open new activity)
    //check if activity is opened
    //open firm selection (open new activity)
    ....
}

public void test1(){
    //click or button (open new activity)
    //check if activity is opened
}

public void test2(){
    //open firm selection (open new activity)
}
...
public void testX(){
    //file at the end is created
}

什么是更好的方法,为什么?

最佳答案

你写的好像是UI用户场景测试。
严格来说,这不是单元测试,所以你不应该试图在不同的测试方法中人为地拆分处理。
这样做会出错,因为每个测试方法都会更新应用程序的状态,并且可能依赖于先前测试所做的更改。您会得到必须按特定顺序进行的耦合测试,第一个测试的更改会对其他测试产生影响。
例如,第三个执行的测试可能会因为第一个或第二个或两者的链接而失败。怎么猜到这种事?

因此,通过不同的用户故事/用例实例定义单一测试方法似乎确实是正确的方式,并且让事情变得更清晰。

The basic Espresso example在他们的网站上是这样的:

@Test
public void greeterSaysHello() {
    onView(withId(R.id.name_field)).perform(typeText("Steve"));
    onView(withId(R.id.greet_button)).perform(click());
    onView(withText("Hello Steve!")).check(matches(isDisplayed()));
}

关于java - 测试用例(场景)——一种还是多种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51242929/

相关文章:

java - PrintWriter 的flush() 和print() 速度非常慢。多线程和套接字

java - jasper 报告 - 如何向条形码数字输出添加星号?

java - com.fasterxml.jackson.databind.exc.MismatchedInputException :

testing - 从动态生成的列表框中选择日期值

java - 修改日期方法

android - Fragment 类型中的方法 getLayoutInflater(Bundle) 不适用于参数 ()

Android 模拟器无法在 ubuntu 中启动

android - 声音池加载监听器?

testing - 使用带有真实 Jackrabbit 实现的 wcm.io AEM Mocks 从 JSON 导入内容

maven - 在多模块 Maven 项目中构建所有模块后如何运行集成测试?