我将现有项目更新为 androidx 但得到了 ExampleInstrumentedTest--> getTargetContext 错误

Muh*_*lan 8 android androidx

当我将项目更新为 androidx 时,出现以下错误

我也搜索过但找不到我的答案,尽管项目运行良好

@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
    @Test
    public void useAppContext() {
        // Context of the app under test.
        Context appContext = InstrumentationRegistry.getTargetContext();

        assertEquals("com.example.villagefoodsecrets", appContext.getPackageName());
    }
}
Run Code Online (Sandbox Code Playgroud)

此时,@RunWith(AndroidJUnit4.class)表明它已被弃用。

Context appContext = InstrumentationRegistry.getTargetContext(); .getTargetContext; 红色格式看起来不存在。那么我能在这里做什么——我应该忽略这个吗?

Zai*_*ain 20

要使用未弃用的类,请在 build.gradle(应用程序模块级别)中添加以下内容

androidTestImplementation ‘androidx.test.ext:junit:1.1.1’
Run Code Online (Sandbox Code Playgroud)

然后在 ExampleInstrumentedTest 类中替换以下已弃用的导入

import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
Run Code Online (Sandbox Code Playgroud)

import androidx.test.platform.app.InstrumentationRegistry ;
import androidx.test.ext.junit.runners.AndroidJUnit4;
Run Code Online (Sandbox Code Playgroud)

并在下面获得上下文使用:

用于 Java

 Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
Run Code Online (Sandbox Code Playgroud)

对于科特林

   val appContext = InstrumentationRegistry.getInstrumentation().targetContext
Run Code Online (Sandbox Code Playgroud)

希望这对你有帮助

  • 这效果很好。正是我在将旧项目升级到 AndroidX 后修复自动化测试所需的内容 (2认同)