In the previous GWT project we worked with acceptance tests and the Robot Framework. The question I asked myself was if something similar exists for Android. Yes, it exists, and its name is Robotium.
Robotium is a test framework created to write robust automatic black-box test cases for Android applications. With the support of Robotium, test case developers can write function, system and acceptance test scenarios, spanning multiple Android activities. It allows you to create test cases for Android Activities, Dialogs, Toasts, Menus and Context Menus etc.
This is one very simple example how to write Robotium tests:
Create an Android test project if one does not exist (explained earlier in my post: Android testing in brief).
Create a test class. For example, if you want to test activity “MyAndroidActivity”, your test class then needs to extend android.test.ActivityInstrumentationTestCase2.
public class MyAndroidActivityTest extends android.test.ActivityInstrumentationTestCase2 {
Download robotium-solo-xxx.jar library or add a dependency to it in the *.pom file of your maven project. It’s open source at Google Code.
Declare a Solo class instance. When writing tests there is no need to plan for or expect new activities in the test case. All is handled automatically by Robotium-Solo. Robotium-Solo can be used in conjunction with ActivityInstrumentationTestCase2. The test cases are written from a user perspective were technical details are not needed.
private Solo solo;
Create a test class constructor.
public MyAndroidActivityTest() {
super("com.example", MyAndroidActivity.class);
}
Override the setUp() and tearDown() methods. Overriden setUp() method is usually the place where you instantiate Solo object. In teardDown() method solo.finalize() is called and all activites that have been opened are finished.
@Override
protected void setUp() throws Exception {
super.setUp();
solo = new Solo(getInstrumentation(), getActivity());
}
@Override
protected void tearDown() throws Exception {
try {
solo.finalize();
} catch (Throwable e) {
e.printStackTrace();
}
getActivity().finish();
super.tearDown();
}
Create a test method. Robotium-Solo offers a number of methods for testing various UI events such as: clickOnText(), enterText(), clearEditText, goBack, serachText() etc.
public void testDisplayedText() throws InterruptedException {
Assert.assertTrue(solo.searchText("Hello world,my activity"));
Assert.assertTrue(getActivity().getString(R.string.hello_string).equals(solo.getCurrentActivity().getTitle()));
}
As you can see it is all very similar to Robot-Selenium tests. When you decide to run this test you have to start the Emulator or connect an actual device to your computer. Then you just select your test class and select Run As/ Android JUnit test. After that you can see your application start and some actions execute. The JUnit view in your Eclipse window shows the current progress and success of the test runs.
Robotium benefits
Robotium tests have great readability compared to standard instrumentation tests. No great knowledge of the tested application is needed, just things like the name of the Activity, displayed texts or anything related to application’s UI. But one of the greatest benefits for us is the possibility to integrate tests with Maven as part of continuous integration.
原文:http://blog.codecentric.de/en/2011/03/android-automated-testing-robotium/
本文介绍了如何使用Robotium进行Android应用的自动化测试。通过创建测试项目和类,并结合Robotium提供的方法,如clickOnText()等,可以实现对Android应用的黑盒测试。此外,文章还展示了如何将这些测试集成到Maven中,以便于持续集成。
838

被折叠的 条评论
为什么被折叠?



