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
でエラーが発生します。なぜこれが起こるのか、またはこの背後にある問題は何ですか?私はコードの作業には興味がありませんが、問題の背後にある実際の問題についてもっと興味があります。
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.
コンテキストの取得方法の変更:
@Before
public void setUp() {
context = ApplicationProvider.getApplicationContext();
}
非推奨の方法に:
@Before
public void setUp() {
context = RuntimeEnvironment.application;
}
私のために問題を解決しました。