ProviderTestCase2
public
abstract
class
ProviderTestCase2
extends AndroidTestCase
java.lang.Object | ||
↳ | android.test.AndroidTestCase | |
↳ | android.test.ProviderTestCase2<T extends android.content.ContentProvider> |
This test case class provides a framework for testing a single
ContentProvider
and for testing your app code with an
isolated content provider. Instead of using the system map of
providers that is based on the manifests of other applications, the test
case creates its own internal map. It then uses this map to resolve providers
given an authority. This allows you to inject test providers and to null out
providers that you do not want to use.
This test case also sets up the following mock objects:
-
An
IsolatedContext
that stubs out Context methods that might affect the rest of the running system, while allowing tests to do real file and database work. -
A
MockContentResolver
that provides the functionality of a regular content resolver, but usesIsolatedContext
. It stubs outContentResolver#notifyChange(Uri, ContentObserver, boolean)
to prevent the test from affecting the running system. -
An instance of the provider under test, running in an
IsolatedContext
.
This framework is set up automatically by the base class' setUp()
method. If you
override this method, you must call the super method as the first statement in
your override.
In order for their tests to be run, concrete subclasses must provide their own
constructor with no arguments. This constructor must call
ProviderTestCase2(java.lang.Class, java.lang.String)
as its first operation.
Summary
Inherited fields |
---|
Public constructors | |
---|---|
ProviderTestCase2(Class<T> providerClass, String providerAuthority)
Constructor. |
Public methods | |
---|---|
MockContentResolver
|
getMockContentResolver()
Gets the |
IsolatedContext
|
getMockContext()
Gets the |
T
|
getProvider()
Returns the content provider created by this class in the |
static
<T extends ContentProvider>
ContentResolver
|
newResolverWithContentProviderFromSql(Context targetContext, String filenamePrefix, Class<T> providerClass, String authority, String databaseName, int databaseVersion, String sql)
Creates a new content provider of the same type as that passed to the test case class, with an authority name set to the authority parameter, and using an SQLite database as the underlying data source. |
Protected methods | |
---|---|
void
|
setUp()
Sets up the environment for the test fixture. |
void
|
tearDown()
Tears down the environment for the test fixture. |
Inherited methods | |
---|---|
Public constructors
ProviderTestCase2
public ProviderTestCase2 (Class<T> providerClass, String providerAuthority)
Constructor.
Parameters | |
---|---|
providerClass |
Class : The class name of the provider under test |
providerAuthority |
String : The provider's authority string |
Public methods
getMockContentResolver
public MockContentResolver getMockContentResolver ()
Gets the MockContentResolver
created by this class during initialization. You
must use the methods of this resolver to access the provider under test.
Returns | |
---|---|
MockContentResolver |
A MockContentResolver instance. |
getMockContext
public IsolatedContext getMockContext ()
Gets the IsolatedContext
created by this class during initialization.
Returns | |
---|---|
IsolatedContext |
The IsolatedContext instance |
getProvider
public T getProvider ()
Returns the content provider created by this class in the setUp()
method.
Returns | |
---|---|
T |
T An instance of the provider class given as a parameter to the test case class. |
newResolverWithContentProviderFromSql
public static ContentResolver newResolverWithContentProviderFromSql (Context targetContext, String filenamePrefix, Class<T> providerClass, String authority, String databaseName, int databaseVersion, String sql)
Creates a new content provider of the same type as that passed to the test case class,
with an authority name set to the authority parameter, and using an SQLite database as
the underlying data source. The SQL statement parameter is used to create the database.
This method also creates a new MockContentResolver
and adds the provider to it.
Both the new provider and the new resolver are put into an IsolatedContext
that uses the targetContext parameter for file operations and a MockContext
for everything else. The IsolatedContext prepends the filenamePrefix parameter to
file, database, and directory names.
This is a convenience method for creating a "mock" provider that can contain test data.
Parameters | |
---|---|
targetContext |
Context : The context to use as the basis of the IsolatedContext |
filenamePrefix |
String : A string that is prepended to file, database, and directory names |
providerClass |
Class : The type of the provider being tested |
authority |
String : The authority string to associated with the test provider |
databaseName |
String : The name assigned to the database |
databaseVersion |
int : The version assigned to the database |
sql |
String : A string containing the SQL statements that are needed to create the desired
database and its tables. The format is the same as that generated by the
sqlite3 tool's .dump command. |
Returns | |
---|---|
ContentResolver |
ContentResolver A new MockContentResolver linked to the provider |
Throws | |
---|---|
|
java.lang.IllegalAccessException |
|
java.lang.InstantiationException |
IllegalAccessException |
|
InstantiationException |
Protected methods
setUp
protected void setUp ()
Sets up the environment for the test fixture.
Creates a new
MockContentResolver
, a new IsolatedContext
that isolates the provider's file operations, and a new instance of
the provider under test within the isolated environment.
Throws | |
---|---|
|
java.lang.Exception |
Exception |
tearDown
protected void tearDown ()
Tears down the environment for the test fixture.
Calls ContentProvider.shutdown()
on the
ContentProvider
represented by mProvider.
Throws | |
---|---|
Exception |