Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:Espresso UI测试,测试类结构的正确方法是什么?_Java_Android_Automated Tests_Android Espresso - Fatal编程技术网

Java Android:Espresso UI测试,测试类结构的正确方法是什么?

Java Android:Espresso UI测试,测试类结构的正确方法是什么?,java,android,automated-tests,android-espresso,Java,Android,Automated Tests,Android Espresso,我试图从Android应用程序中UI的自动化测试开始。我选择了浓缩咖啡FW,我想问一下: 测试类的正确结构是什么?这意味着,我应该为每个活动创建一个新的testClass并成批运行,还是应该为整个应用程序中的某些场景创建一个testClass 我如何一次运行包中的所有测试?因为现在我必须右键单击测试类并为每个测试选择手动运行测试类 谢谢你的建议 注意: 我这样做的非常简单的场景示例: @RunWith(AndroidJUnit4.class) public class MainActivityT

我试图从Android应用程序中UI的自动化测试开始。我选择了浓缩咖啡FW,我想问一下:

测试类的正确结构是什么?这意味着,我应该为每个活动创建一个新的testClass并成批运行,还是应该为整个应用程序中的某些场景创建一个testClass

我如何一次运行包中的所有测试?因为现在我必须右键单击测试类并为每个测试选择手动运行测试类

谢谢你的建议

注意:

我这样做的非常简单的场景示例:

@RunWith(AndroidJUnit4.class)
public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {

    private MainActivity mActivity;

    public MainActivityTest() {
        super(MainActivity.class);
    }

    @Before
    public void setUp() throws Exception {
        super.setUp();
        injectInstrumentation(InstrumentationRegistry.getInstrumentation());
        mActivity = getActivity();
    }

    @Test
    public void buttonShouldUpdateText(){
        onView(withId(R.id.goToSecondActivityBtn)).perform(click());
        onView(withId(R.id.text1SecondView)).check(matches(withText("Hello world!")));
        onView(withId(R.id.txtFieldOne)).perform(typeText("TEST"));
    }

}
@RunWith(AndroidJUnit4.class)
公共类MainActivityTest扩展ActivityInstrumentationTestCase2{
私人活动能力;
公共维护活动测试(){
超级(MainActivity.class);
}
@以前
public void setUp()引发异常{
super.setUp();
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
mActivity=getActivity();
}
@试验
public void按钮shouldupdatetext(){
onView(带id(R.id.goToSecondActivityBtn)).perform(单击());
onView(使用id(R.id.text1SecondView))。检查(匹配项(使用text(“Hello world!”)));
onView(带id(R.id.txtFieldOne))。执行(typeText(“测试”));
}
}
但是,如果我将第二个方法添加到类中,该类正在处理第二个活动上的一些交互,我将失败,出现异常

要运行所有测试(假设您有Gradle配置),请使用Gradle任务connectedCheck

在Android Studio中,您可以从右侧面板上的gradle任务列表和命令行中选择它:

./gradlew connectedCheck
至于测试结构,在示例测试类中假设每个@test方法都重新启动您的活动(在示例MainActivity中)。如果您真的只想测试第二个活动,那么您应该创建一个新的测试类,即使它只是为了以更干净的方式组织测试用例

对于使用浓缩咖啡的更高级测试体系结构,我推荐本文:

和演示代码: