测试用例(场景)-一种或多种方法?

时间:2018-07-09 10:06:24

标签: 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
}

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

2 个答案:

答案 0 :(得分:1)

您似乎写的东西看起来像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()));
}

答案 1 :(得分:0)

我将执行以下操作:

  1. 为单元中的每个方法(例如通常是一个类)编写单元测试。在每个测试用例中使用自己的测试(例如myTestMethod_withNegativInput()myTestMethod_withPositiveInput())。您可以使用这些测试来测试您的设备是否执行了应做的工作。
  2. 编写一些集成测试,其中包括应用程序的更多层(例如,针对服务的集成测试,它使用持久层中的某些方法)。您可以使用这些测试来验证您的应用程序层是否协同工作。 (也在这里,您正在测试类的一种方法)

所以我建议您采用2.方法。