如果活动已启动,如何在 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 是否真的启动了。请帮我。提前致谢。
阅读有关 Log
和 Logcat
的文档。您可以跟踪那里发生的所有操作。
已多次回答:
- 从测试执行时获取activity:
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)
}
谁能教我如何测试下面的示例代码?
如何为此编写 espresso 测试?由于不需要查看操作?
public class SampleActivity extends AppCompatActivity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
}
}
我想测试 activity 是否真的启动了。请帮我。提前致谢。
阅读有关 Log
和 Logcat
的文档。您可以跟踪那里发生的所有操作。
已多次回答:
- 从测试执行时获取activity:
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)
}