Android检测:没有检测注册错误



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

java.lang.IollegalStateException:未注册检测!必须在注册检测下运行。

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

我将简要解释我在考试中所做的事情。我遵循了谷歌和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'

选择其中一个,使用com.android.support.testandroidx库,因为如果我们一起使用它们,它们会相互冲突。希望这能帮助您解决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;
}

为我解决了这个问题

最新更新