Andrea Baccega Andrea Baccega - 6 months ago 12
Android Question

ServiceTestCase<T>.getService?

I'm trying to build a valid junit testing suite on android.

Since i'm new to Junit i can't figure out how to use the ServiceTestCase class.

I can't figure it out how to get the getService() method working. it ever returns me null . So i decided to start it via startService. It does not work.

Could you please help me ?

Thanks

Answer

This is what you need to test your service

public class MyServiceTests extends ServiceTestCase<MyService> {

private static final String TAG = "MyServiceTests";

public MyServiceTests() {
    super(MyService.class);
}

/**
 * Test basic startup/shutdown of Service
 */
@SmallTest
public void testStartable() {
    Intent startIntent = new Intent();
    startIntent.setClass(getContext(), MyService.class);
    startService(startIntent);
    assertNotNull(getService());
}

/**
 * Test binding to service
 */
@MediumTest
public void testBindable() {
    Intent startIntent = new Intent();
    startIntent.setClass(getContext(), MyService.class);
    IBinder service = bindService(startIntent);
    assertNotNull(service);
}
}

I've written some articles about Android testing and test driven development that you may find useful, check http://dtmilano.blogspot.com/search/label/test%20driven%20development.