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
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.
The accepted answer doesn't work any more.
TestCases like ActivityInstrumentationTestCase2 or ServiceTestCase are
deprecated in favor of ActivityTestRule or ServiceTestRule.
ATSL link
It seems they forgot to update the actual documentation.