在研究了Android的自动化测试框架后,我偶然发现了Espresso。它似乎拥有我想要的一切:可靠的测试,最少的样板代码,提高性能。
我观看了演示Espresso的GTAC 2013演示文稿,并非常高兴地看到它运行测试的速度有多快。然而,实际上已经实现了一些测试,我必须说我没有注意到,如果使用标准的Android测试框架有任何性能优势。我还没有做过任何“官方”基准测试,但据我了解,Espresso已经吹走了标准的Android测试框架。
我正在测试的项目是developer.android.com上的教程中描述的项目。我写的测试非常简单:
@Test
public void test_sendButton_shouldInitiallyBeDisabled() {
onView(withId(R.id.button_send)).check(matches(not(ViewMatchers.isEnabled())));
}
@Test
public void test_sendButton_shouldBeEnabledAfterEnteringText() {
String enteredText = "This is my message!";
// Type Text
onView(withId(R.id.edit_message)).perform(ViewActions.typeText(enteredText));
// Validate the Result
onView(withId(R.id.button_send)).check(matches(ViewMatchers.isEnabled()));
}
@Test
public void test_enteringTextAndPressingSendButton_shouldDisplayEnteredText() {
String enteredText = "This is my message!";
// Type Text
onView(withId(R.id.edit_message)).perform(ViewActions.typeText(enteredText));
// Click Button
onView(withId(R.id.button_send)).perform(click());
// Validate the Results
onView(withId(R.id.display_message)).check(ViewAssertions.matches(ViewMatchers.withText(enteredText)));
}
我按照Espresso网站上的所有说明操作,特别注意我的运行配置使用了GoogleInstrumentationTestRunner。
那我错过了什么?我只是想念一些简单的东西吗?或者我的前提是显着改善性能完全错误?
答案 0 :(得分:3)
对于非常简单的测试,您可能没有注意到与标准仪器相比有很大差异的事实。对于连续运行(即必须稳定)的更复杂的测试(例如跨越多个活动的测试),人们通常最终添加睡眠/重试逻辑以防止片状。使用Espresso,您可以删除它,并大大减少测试运行时间。这是G+ post,显示了Espresso与Robotium测试的比较。