FileDocCategorySizeDatePackage
Focus2ActivityTest.javaAPI DocAndroid 1.5 API4826Wed May 06 22:41:08 BST 2009com.example.android.apis.view

Focus2ActivityTest

public class Focus2ActivityTest extends android.test.ActivityInstrumentationTestCase
An example of an {@link ActivityInstrumentationTestCase} of a specific activity {@link Focus2}. By virtue of extending {@link ActivityInstrumentationTestCase}, the target activity is automatically launched and finished before and after each test. This also extends {@link android.test.InstrumentationTestCase}, which provides access to methods for sending events to the target activity, such as key and touch events. See {@link #sendKeys}. In general, {@link android.test.InstrumentationTestCase}s and {@link ActivityInstrumentationTestCase}s are heavier weight functional tests available for end to end testing of your user interface. When run via a {@link android.test.InstrumentationTestRunner}, the necessary {@link android.app.Instrumentation} will be injected for you to user via {@link #getInstrumentation} in your tests. See {@link com.example.android.apis.app.ForwardingTest} for an example of an Activity unit test. See {@link com.example.android.apis.AllTests} for documentation on running all tests and individual tests in this application.

Fields Summary
private android.widget.Button
mLeftButton
private android.widget.Button
mCenterButton
private android.widget.Button
mRightButton
Constructors Summary
public Focus2ActivityTest()
The first constructor parameter must refer to the package identifier of the package hosting the activity to be launched, which is specified in the AndroidManifest.xml file. This is not necessarily the same as the java package name of the class - in fact, in some cases it may not match at all.

        super("com.example.android.apis", Focus2.class);
    
Methods Summary
protected voidsetUp()

        super.setUp();
        final Focus2 a = getActivity();
        mLeftButton = (Button) a.findViewById(R.id.leftButton);
        mCenterButton = (Button) a.findViewById(R.id.centerButton);
        mRightButton = (Button) a.findViewById(R.id.rightButton);
    
public voidtestGoingLeftFromRightButtonGoesToCenter()

        // Give right button focus by having it request focus.  We post it
        // to the UI thread because we are not running on the same thread, and
        // any direct api calls that change state must be made from the UI thread.
        // This is in contrast to instrumentation calls that send events that are
        // processed through the framework and eventually find their way to
        // affecting the ui thread.
        getActivity().runOnUiThread(new Runnable() {
            public void run() {
                mRightButton.requestFocus();
            }
        });
        // wait for the request to go through
        getInstrumentation().waitForIdleSync();

        assertTrue(mRightButton.isFocused());

        sendKeys(KeyEvent.KEYCODE_DPAD_LEFT);
        assertTrue("center button should be focused", mCenterButton.isFocused());
    
public voidtestGoingRightFromLeftButtonJumpsOverCenterToRight()

        sendKeys(KeyEvent.KEYCODE_DPAD_RIGHT);
        assertTrue("right button should be focused", mRightButton.isFocused());
    
public voidtestPreconditions()
The name 'test preconditions' is a convention to signal that if this test doesn't pass, the test case was not set up properly and it might explain any and all failures in other tests. This is not guaranteed to run before other tests, as junit uses reflection to find the tests.

        assertTrue("center button should be right of left button",
                mLeftButton.getRight() < mCenterButton.getLeft());
        assertTrue("right button should be right of center button",
                mCenterButton.getRight() < mRightButton.getLeft());
        assertTrue("left button should be focused", mLeftButton.isFocused());