Android 仪器测试:没有仪器注册错误

Android Instrumentation Testing: No instrumentation registered Error

我正在尝试使用 Espresso 编写 Android 插桩测试。当我 运行 测试时,我得到这个错误

java.lang.IllegalStateException: No instrumentation registered! Must run under a registering instrumentation.

我不明白这个错误是什么意思。

我将简要说明我在测试中所做的事情。我关注了 samples given by google and EspressoTesting Tutorial

@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'

选择其中之一,使用com.android.support.test,或者androidx库,因为如果我们一起使用,它们会相互冲突。希望这可以帮助您解决错误 No instrumentation registered! Must run under a registering instrumentation.

更改我从中检索上下文的方式:

import androidx.test.core.app.ApplicationProvider;

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

采用已弃用的方式:

import org.robolectric.RuntimeEnvironment;

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

为我解决了这个问题。