web-dev-qa-db-ja.com

Androidインストルメンテーションテスト:インストルメンテーションが登録されていませんエラー

Android Espressoを使用してインストルメント化されたテストを書き込もうとしています。テストを実行すると、このエラーが発生します

Java.lang.IllegalStateException:インストルメンテーションが登録されていません!登録インストルメンテーションの下で実行する必要があります。

このエラーの意味がわかりません。

テストで何をしているのか簡単に説明します。私はグーグルによって与えられた サンプルEspressoTestingチュートリアル に従いました

@SmallTest
@RunWith(AndroidJUnit4.class)
public class ActivityInputTest {

   @Rule
   public ActivityTestRule<ActivityInput> aiRule = new ActivityTestRule<>(ActivityInput.class);


   @Before
   public void setUp(){}
}

テストを実行すると、アノテーション@Ruleでエラーが発生します。なぜこれが起こるのか、またはこの背後にある問題は何ですか?私はコードの作業には興味がありませんが、問題の背後にある実際の問題についてもっと興味があります。

3
kcc__

androidxライブラリを使用したため、まったく同じエラーが発生しました。 build.gradleでライブラリを確認し、次のブロックコードのようにUIテストの依存関係を変更することをお勧めします。

androidTestImplementation "com.Android.support.test:runner:1.0.2"
androidTestImplementation "com.Android.support.test:rules:1.0.2"
androidTestImplementation 'com.Android.support.test.espresso:espresso-core:3.0.2'

androidxライブラリではなくcom.Android.support.testを使用することをお勧めします。これらを一緒に使用すると、互いに競合するためです。これがエラーの解決に役立つことを願っていますNo instrumentation registered! Must run under a registering instrumentation.

9
audrians

コンテキストの取得方法の変更:

@Before
public void setUp() {
    context = ApplicationProvider.getApplicationContext();
}

非推奨の方法に:

@Before
public void setUp() {
    context = RuntimeEnvironment.application;
}

私のために問題を解決しました。

1
Louis