मैं परीक्षण समर्थन पुस्तकालय ढांचे के साथ बुनियादी अबाध सेवा का परीक्षण करने के कोशिश कर रहा हूँ के अंदर अबाध सेवा प्रारंभ करने में अक्षम: http://developer.android.com/tools/testing-support-library/index.htmlएंड्रॉयड JUnit 4 instrumented परीक्षण
LocalService.java:
public class LocalService extends Service {
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
LocalServiceTest.java :
@RunWith(AndroidJUnit4.class)
public class LocalServiceTest {
@Rule
public final ServiceTestRule mServiceRule = new ServiceTestRule();
@Test
public void testWithUnboundService() throws TimeoutException {
Intent serviceIntent =
new Intent(InstrumentationRegistry.getTargetContext(), LocalService.class);
mServiceRule.startService(serviceIntent);
}
}
जब मैं परीक्षण चलाने का प्रयास, मैं TimeoutException निम्नलिखित हो:
+०१२३५१६४१०६१java.util.concurrent.TimeoutException: Waited for 5 SECONDS, but service was never connected
at android.support.test.rule.ServiceTestRule.waitOnLatch(ServiceTestRule.java:258)
at android.support.test.rule.ServiceTestRule.bindServiceAndWait(ServiceTestRule.java:207)
at android.support.test.rule.ServiceTestRule.startService(ServiceTestRule.java:137)
at com.example.android.testing.ServiceTestRuleSample.LocalServiceTest.testWithBoundService(LocalServiceTest.java:71)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at android.support.test.rule.ServiceTestRule$ServiceStatement.evaluate(ServiceTestRule.java:329)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:54)
at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:240)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1729)
क्या ServiceTestRule के साथ ऐसी सेवाओं का परीक्षण करना संभव है? यदि नहीं, तो क्या जुनीट 4 टेस्ट क्लास का उपयोग करके सेवाओं को शुरू और बंद करने का कोई और उचित तरीका है?
मुझे इसी समस्या का सामना करना पड़ा। और समाधान केवल इस सेवा के संदर्भ को वापस करने पर लागू करने के लिए था। – PSIXO
हां, आखिर में मैंने इसे उसी तरह से किया है। दुर्भाग्यवश, इस मामले में मुझे सेवा प्रारंभ करने की प्रतीक्षा करने के लिए नींद() जोड़ना पड़ा। आपका धन्यावाद! –