1

UI スレッドで実行するコードを使用して、非常に単純なインストルメンテーション テスト ケースを作成しようとしています。テストクラスは次のとおりです。

@RunWith(RobolectricTestRunner.class)
@Config(manifest = "src/main/AndroidManifest.xml", sdk = 18)
public class GetTimeFromServerTest extends InstrumentationTestCase {
    Context context = RuntimeEnvironment.application;
    private MainActivity activity;
    private Instrumentation instr;

    @Before
    public void setUp() throws Exception {
        activity = Robolectric.buildActivity(MainActivity.class).create().get();
    super.setUp();
        injectInstrumentation(InstrumentationRegistry.getInstrumentation());
        instr = getInstrumentation();
    }

    @Test
    public void someTest() throws Throwable {

            runTestOnUiThread(new Runnable() {
                @Override
                public void run() {
                    doSomething();
                }
            });

        }
}

しかし、私が呼び出そうとするinjectInstrumentation(InstrumentationRegistry.getInstrumentation())と、

java.lang.IllegalStateException: No instrumentation registered! Must run under a registering instrumentation.
at android.support.test.InstrumentationRegistry.getInstrumentation(InstrumentationRegistry.java:45)
at com.m1_mm.tools.GetTimeFromServerTest.setUp(GetTimeFromServerTest.java:53)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:251)

このテストはどのように実行できますか?

4

0 に答える 0