如果活动已启动,如何在 Android 中进行 Espresso 测试

How to Espresso Test in Android If an Acitivy was Started

谁能教我如何测试下面的示例代码?

如何为此编写 espresso 测试?由于不需要查看操作?

public class SampleActivity extends AppCompatActivity {
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        Intent intent = new Intent(this, NextActivity.class);
        startActivity(intent);
    }
}

我想测试 activity 是否真的启动了。请帮我。提前致谢。

阅读有关 LogLogcat 的文档。您可以跟踪那里发生的所有操作。

已多次回答:

  1. 从测试执行时获取activity:

  1. espresso-intents神器的用法(首选选项):

请记住,IntentsTestRule 的使用在这里可能有问题,它曾经在您的 activity 启动后调用 Intents.init(),这已经太晚了,因为您已经在新 activity 中。不确定此行为是否仍然存在,但您可以通过在测试 class 的 @Before 方法中手动调用 init() 来解决此问题,不要忘记执行 Intents.release() 在你的拆解中

示例 Intents.intending(应该在发布之前):

@get:Rule
var mActivityTestRule = ActivityTestRule(LoginActivity::class.java, false, false)

@Before
fun before() {
    Intents.init()
}

@After
fun after() {
    Intents.release()
}

@Test
fun whenStartWithUser_shouldOpenHomeScreen() {
    val matcherIntent = hasComponent(HomeActivity::class.java.name)

    Intents.intending(matcherIntent).respondWith(Instrumentation.ActivityResult(Activity.RESULT_OK, null))
    mActivityTestRule.launchActivity(Intent())
    Intents.intended(matcherIntent)
}