gpt4 book ai didi

android - 使用 Robolectric 测试该按钮启动 Activity

转载 作者:IT王子 更新时间:2023-10-29 00:06:06 26 4
gpt4 key购买 nike

您好,我有以下代码:

@RunWith(Test9Runner.class)
public class MainActivityTest
{
private MainActivity activity;
private Button pressMeButton;

@Before
public void setUp() throws Exception
{
activity = new MainActivity();
activity.onCreate(null);
pressMeButton = (Button) activity.findViewById(R.id.button1);
}

@Test
public void shouldUpdateResultsWhenButtonIsClicked() throws Exception
{
pressMeButton.performClick();
ShadowActivity shadowActivity = shadowOf(activity);
Intent intent = shadowActivity.getResultIntent();
System.out.print(intent.toString());
}
}

但我不知道如何测试按下 pressMeButton 会启动一个新 Activity。实际上确实如此,但是如何为这个事实编写正确的 Robolectric 单元测试呢?

最佳答案

在 Robolectric 2.1.1 中,您可以验证 Intent 启动新 Activity 是否以下列方式发出。

@RunWith(RobolectricTestRunner.class)
public class MyTest {
private ShadowActivity shadowActivity;
private MyActivity activity;

@Before
public void setup() {
activity = new MyActivity();
shadowActivity = Robolectric.shadowOf(activity);
}

@Test
public shouldStartNewActivityWhenSomething() {
//Perform activity startup
//Do some action which starts second activity, for example View::performClick()
//...
//Check Intent
Intent intent = shadowActivity.peekNextStartedActivityForResult().intent;
assertThat(intent.getStringExtra(MySecondActivity.EXTRA_MESSAGE)).isEqualTo("blebleble");
assertThat(intent.getComponent()).isEqualTo(new ComponentName(activity, MySecondActivity.class));
}
}

这与我正在做的类似。请注意,通过调用 new Activity() 创建 Activity 会使 Robolectric 打印有关不正确创建 Activity 的警告,这可能会做得更好...

关于android - 使用 Robolectric 测试该按钮启动 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5896088/

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