How can I add and remove packages 开发者_Python百科in jUnit tests in android?
I am building an app that has to react to packages being added and removed (packages other than the one being tested), and I would like to be able to test that functionality in jUnit tests.
Any suggestions?
Since you didn't give much info, my answer assumes you are using a Service or Activity since those cases are probably the ones you are having trouble with. If you are just dealing with a BroadcastReceiver then call onReceive on your BroadcastReceiver directly.
Here is some code that should get you going:
public class MyTests extends AndroidTestCase {
private BroadcastReceiver mPackageAddedReceiver;
@Override
protected void setUp() throws Exception
{
super.setUp();
this.setContext(new MyContextWrapper(getContext()));
}
public void test_PackageAdded_AssertStuff()
{
Intent packageAdded = new Intent(Intent.ACTION_PACKAGE_ADDED);
packageAdded.setData(Uri.parse("package://my.package"));
mPackageAddedReceiver.onReceive(getContext(), packageAdded);
// Do Asserts
}
private class MyContextWrapper extends ContextWrapper
{
public MyContextWrapper(Context base)
{
super(base);
}
@Override
public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
String broadcastPermission, Handler scheduler)
{
if (filter.hasAction(Intent.ACTION_PACKAGE_ADDED)) {
mPackageAddedReceiver = receiver;
}
return super.registerReceiver(receiver, filter, broadcastPermission, scheduler);
}
}; }
You will probably want to add more actions that you support.
精彩评论