|
It happened again that I received an e-mail from somebody asking
whether there is a way to automate the testing of Android user interfaces. I did
not know so I went after the issue and to my utter surprise, I discovered that an
entire unit test framework has been developed into Android while I looked the other
way. In this blog entry, I will describe my experiences with the Android instrumentation
framework.
You can download the example program from
here.
The idea behind Android instrumentation framework is that there are instrumentation
components that resemble a lot the usual Activities. The purpose of these instrumentation
components, however, is to test-drive other, normal Activities. Let's see the example
program!
Install the package in the bin directory as usual:
adb install instrumentation-debug.apk
If the package has been installed before, you first have to uninstall it. This is
new in the 1.0 version of the SDK, previously the new installation would simply
overwrite the old one.
adb uninstall aexp.instrumentation
Two applications appear in the application folder. "Calculator" is a primitive calculator
application used as test target. You can launch it independently and try it yourself.
If you launch "Calculator instrumentation launcher", you will be confronted with
a button to launch Calculator instrumentation. Once you push it, the calculator
launches but its input keypresses will come from the instrumentation component.
You will see the input fields filled up automatically, the addition button pushed
and the result displayed. Then both the calculator instance and the launcher will
disappear but if you check the logs (adb logcat), you will see that the test was
successful.

The key instruction is in CalculatorInstrumentationLauncher.java where the instrumentation
component is launched:
startInstrumentation(
new ComponentName(
CalculatorInstrumentationLauncher.this,
CalculatorInstrumentation.class ),
null,
null );
This launches CalculatorInstrumentation component which is a descendant of android.app.Instrumentation.
The instrumentation component resembles a normal Activity, except that it is able
to drive user input of other activities. This time we launch the Calculator, feed
in keypresses (sendCharacterSync()) and invoke one of its method to obtain the result.
Note the usage of runOnMainSync() method when we invoke Calculator's method to obtain
the result.
It is definitely cool that Android has a user interface-oriented unit testing framework
built into the platform. Maybe I am ignorant but I am not aware of any other platform
that has this capability. In order to
Test
Driven Development (TDD), we need a proper unit testing framework and Android
has even JUnit integrated. More about that later.
Source:
mylifewithandroid blog
{mos_fb_discuss:18}
|
How to display a JPG...
Is that posible to zoom in and drag p...
Making a custom Andr...
Cool - I will use it carefully i promise
How to display a JPG...
problem in image loading - i have exe...
Introducing Calculon...
Thank You for your contribution - Hi,...
Debug a Native Appli...
Never mind, I somehow overlooked the ...