Java Android:Espresso UI测试,测试类结构的正确方法是什么?
我试图从Android应用程序中UI的自动化测试开始。我选择了浓缩咖啡FW,我想问一下: 测试类的正确结构是什么?这意味着,我应该为每个活动创建一个新的testClass并成批运行,还是应该为整个应用程序中的某些场景创建一个testClass 我如何一次运行包中的所有测试?因为现在我必须右键单击测试类并为每个测试选择手动运行测试类 谢谢你的建议 注意: 我这样做的非常简单的场景示例: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
@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中)。如果您真的只想测试第二个活动,那么您应该创建一个新的测试类,即使它只是为了以更干净的方式组织测试用例
对于使用浓缩咖啡的更高级测试体系结构,我推荐本文:
和演示代码: