FileDocCategorySizeDatePackage
AndroidTestCase.javaAPI DocAndroid 5.1 API6533Thu Mar 12 22:22:10 GMT 2015android.test

AndroidTestCase

public class AndroidTestCase extends TestCase
Extend this if you need to access Resources or other things that depend on Activity Context.

Fields Summary
protected android.content.Context
mContext
private android.content.Context
mTestContext
Constructors Summary
Methods Summary
public voidassertActivityRequiresPermission(java.lang.String packageName, java.lang.String className, java.lang.String permission)
Asserts that launching a given activity is protected by a particular permission by attempting to start the activity and validating that a {@link SecurityException} is thrown that mentions the permission in its error message. Note that an instrumentation isn't needed because all we are looking for is a security error and we don't need to wait for the activity to launch and get a handle to the activity.

param
packageName The package name of the activity to launch.
param
className The class of the activity to launch.
param
permission The name of the permission.

        final Intent intent = new Intent();
        intent.setClassName(packageName, className);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        try {
            getContext().startActivity(intent);
            fail("expected security exception for " + permission);
        } catch (SecurityException expected) {
            assertNotNull("security exception's error message.", expected.getMessage());
            assertTrue("error message should contain " + permission + ".",
                    expected.getMessage().contains(permission));
        }
    
public voidassertReadingContentUriRequiresPermission(android.net.Uri uri, java.lang.String permission)
Asserts that reading from the content uri requires a particular permission by querying the uri and ensuring a {@link SecurityException} is thrown mentioning the particular permission.

param
uri The uri that requires a permission to query.
param
permission The permission that should be required.

        try {
            getContext().getContentResolver().query(uri, null, null, null, null);
            fail("expected SecurityException requiring " + permission);
        } catch (SecurityException expected) {
            assertNotNull("security exception's error message.", expected.getMessage());
            assertTrue("error message should contain " + permission + ".",
                    expected.getMessage().contains(permission));
        }
    
public voidassertWritingContentUriRequiresPermission(android.net.Uri uri, java.lang.String permission)
Asserts that writing to the content uri requires a particular permission by inserting into the uri and ensuring a {@link SecurityException} is thrown mentioning the particular permission.

param
uri The uri that requires a permission to query.
param
permission The permission that should be required.

        try {
            getContext().getContentResolver().insert(uri, new ContentValues());
            fail("expected SecurityException requiring " + permission);
        } catch (SecurityException expected) {
            assertNotNull("security exception's error message.", expected.getMessage());
            assertTrue("error message should contain \"" + permission + "\". Got: \""
                    + expected.getMessage() + "\".",
                    expected.getMessage().contains(permission));
        }
    
public android.content.ContextgetContext()

        return mContext;
    
public android.content.ContextgetTestContext()

hide

        return mTestContext;
    
protected voidscrubClass(java.lang.Class testCaseClass)
This function is called by various TestCase implementations, at tearDown() time, in order to scrub out any class variables. This protects against memory leaks in the case where a test case creates a non-static inner class (thus referencing the test case) and gives it to someone else to hold onto.

param
testCaseClass The class of the derived TestCase implementation.
throws
IllegalAccessException

        final Field[] fields = getClass().getDeclaredFields();
        for (Field field : fields) {
            if (!field.getType().isPrimitive() &&
                    !Modifier.isStatic(field.getModifiers())) {
                try {
                    field.setAccessible(true);
                    field.set(this, null);
                } catch (Exception e) {
                    android.util.Log.d("TestCase", "Error: Could not nullify field!");
                }

                if (field.get(this) != null) {
                    android.util.Log.d("TestCase", "Error: Could not nullify field!");
                }
            }
        }
    
public voidsetContext(android.content.Context context)

        mContext = context;
    
public voidsetTestContext(android.content.Context context)
Test context can be used to access resources from the test's own package as opposed to the resources from the test target package. Access to the latter is provided by the context set with the {@link #setContext} method.

hide

        mTestContext = context;
    
protected voidsetUp()

        super.setUp();
    
protected voidtearDown()

        super.tearDown();
    
public voidtestAndroidTestCaseSetupProperly()

        assertNotNull("Context is null. setContext should be called before tests are run",
                mContext);