我正在尝试使用Espresso编写Android Instrumented测试。当我运行测试时,出现此错误
java.lang.IllegalStateException:未注册任何工具!必须在注册工具下运行。
我不明白此错误的含义。
我将简要解释我在测试中正在做什么。我遵循了Google和samples
给出的EspressoTesting Tutorial@SmallTest
@RunWith(AndroidJUnit4.class)
public class ActivityInputTest {
@Rule
public ActivityTestRule<ActivityInput> aiRule = new ActivityTestRule<>(ActivityInput.class);
@Before
public void setUp(){}
}
运行测试时,错误发生在注释@Rule
处。我可以得到一些解释为什么会发生这种情况,或者背后是什么问题吗?我对工作代码不感兴趣,但对问题背后的实际问题更感兴趣。
答案 0 :(得分:7)
我也遇到了与您完全相同的错误,因为我使用了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.
答案 1 :(得分:1)
更改我如何从以下位置检索上下文:
@Before
public void setUp() {
context = ApplicationProvider.getApplicationContext();
}
以不推荐使用的方式:
@Before
public void setUp() {
context = RuntimeEnvironment.application;
}
为我解决了这个问题。