Android测试之Espresso

2017-02-21  本文已影响85人  卖梦想的男孩

Espresso 测试框架提供了一组 API 来构建 UI 测试,用于测试应用中的用户流,可以编写简洁、运行可靠的自动化 UI 测试,适合编写白盒自动化测试,新版的AS已经能够支持自动录制测试脚本,再配合适当的修改可能更方便快捷的写出测试用例。
要求 Android 2.2(API >= 8)。

配置是在JUnit的基础上引入Espresso库

dependencies{
 androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
}

查找元素:

支持的操作:

详情Api见:传送门

package cn.kerison.playground.main;
// import ...;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class DemoActivityTest {

    @Rule
    public ActivityTestRule<DemoActivity> mActivityRule = new ActivityTestRule<>(
            DemoActivity.class);

    @Before
    public void setUp() throws Exception {
        System.out.println("call setUp in test");
    }

    @After
    public void tearDown() throws Exception {
        System.out.println("call tearDown in test");
    }

    @Test
    public void sayHello() throws Exception {
        System.out.println("call sayHello in test");
        mActivityRule.getActivity().sayHello();
    }

    @Test
    public void clickFAB() throws Exception{
        System.out.println("call clickFB in test");
        onView(withId(R.id.fab)).check(matches(isClickable()));
        onView(withId(R.id.fab)).perform(click()).check(matches(isDisplayed()));
    }

    @Test
    public void inputText() throws  Exception{
        System.out.println("call inputText in test");
        onView(withId(R.id.input_view)).perform(typeText("abcd"), closeSoftKeyboard());
    }
}

这里的typeText不支持中文,如果需要中文,其实采用replaceText更快,这里是为了查看输入过程。
Espresso还支持WebView,更多可以查看这里

附录

虽然api已经简化的不少,但是人都是怕麻烦的,当然是越简单越好。
AS提供了测试录制功能。
点击Run -> Recording Espresso Test。
会让你选择启动设备让你输入需要操作的步骤。设备启动后直接操作你需要的步骤就可以了,列表里会自动显示你操作过的步骤,你还可以手动添加Assertion,当然录制也不是那么完美,最起码已经能支持的比手写的快了不少。最后点击Complete Recording即可生成相应的测试用用例。


录制测试脚本
上一篇下一篇

猜你喜欢

热点阅读