gpt4 book ai didi

android - 意式 Espresso (hasComponent(...))在简单示例中不起作用

转载 作者:行者123 更新时间:2023-12-04 23:58:02 35 4
gpt4 key购买 nike

有很多这样的问题没有回答,我也有一个新的空白项目的问题,知道问题是什么吗?我没有做更多的事情:

public class ExampleInstrumentedTest {

@Test
public void useAppContext() {
Intents.init();
final Intent intent = new Intent(ApplicationProvider.getApplicationContext(), MainActivity.class);
try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(intent)) {
Log.d("++", "state: " + scenario.getState());
assertTrue(scenario.getState() == Lifecycle.State.RESUMED);
intended(hasComponent(MainActivity.class.getName()));
Intents.release();
}
}

}

如果我调用 Intents.init(); 也没关系在 setUp() 或使用 IntentsTestRule 或 ActivityScenarioRule 时,每次都会出现相同的问题:

E/TestRunner: androidx.test.espresso.base.DefaultFailureHandler$AssertionFailedWithCauseError: 想要匹配 1 个 Intent 。实际上匹配了 0 个 Intent 。

Github repo

最佳答案

您的测试失败,因为 Intent 带有 MainActivity组件名称不是由被测应用程序启动的。 documentation intended() 的状态:

Asserts that the given matcher matches a specified number of intents sent by the application under test.



因此,由于您正在测试的应用程序正在使用 MainActivity作为它的启动器 Intent ,另一个 Intent 是 MainActivity因为它的组件不会被 MainActivity 触发.

一个工作(和更现实)的例子如下:
  • 验证 MainActivity成功触发 Intent to launch OtherActivity .
  • // In MainActivity

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val otherActivity = Intent(this, OtherActivity::class.java)
    startActivity(otherActivity)
    }

    // In your instrumented test

    @Test
    fun otherActivityIsLaunchedByMainActivity() {
    Intents.init()

    val intent = Intent(ApplicationProvider.getApplicationContext<Context>(), MainActivity::class.java)
    val scenario = ActivityScenario.launch<MainActivity>(intent)
    intended(hasComponent(OtherActivity::class.java.name))

    Intents.release()
    }

    关于android - 意式 Espresso (hasComponent(...))在简单示例中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61522934/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com