ServiceTestCase.getService?

2020-05-29 07:59发布

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

2条回答
何必那么认真
2楼-- · 2020-05-29 08:37

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.

查看更多
混吃等死
3楼-- · 2020-05-29 08:55

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.

查看更多
登录 后发表回答