【问题标题】:Robolectric, how to check visibility of FragmentDialog?Robolectric,如何检查 FragmentDialog 的可见性?
【发布时间】:2015-11-12 19:18:06
【问题描述】:

我的活动中有一个按钮。单击后,它会检查用户注册状态。如果已注册,则显示一个对话框,否则将启动注册活动。

我设置了表示用户已注册的必需标志。我执行单击并期望必须创建对话框,但调试后我看到这是 null :(

这是我的代码:

@Test
    public void testSignupButton()
    {
        PreferenceUtils.setSessionId(activity, "sessionId");
        assertTrue(PreferenceUtils.isActivated(activity));

        btnSignUp.performClick();

        Dialog dialog = ShadowDialog.getLatestDialog(); // << dialog is null
        ShadowDialog loginDialogFragment = Shadows.shadowOf(dialog); // Test fails here since dialog is null
        assertThat(loginDialogFragment.getTitle().toString(), equalTo("TestDialogFragment"));
    }

任何想法,将不胜感激,谢谢。

【问题讨论】:

    标签: android unit-testing junit android-fragmentactivity robolectric


    【解决方案1】:

    天哪,我发现我的问题出在哪里。我的setupView 方法中有activity = Robolectric.buildActivity(HitchWelcomeActivity.class).create().get();,这是错误的。为了获得真正的活动,我也应该有visible() 方法。

    所以,我将上面的代码更改为以下代码并修复了我的问题。

        @Before
        public void setUp()
        {
            activity = Robolectric.buildActivity(WelcomeActivity.class)
                    .create()
                    .start()
                    .resume()
                    .visible()
                    .get();
    
            btnSignUp = (Button) activity.findViewById(R.id.dialog_welcome_sign_up);
            btnSkip = (TextView) activity.findViewById(R.id.dialog_welcome_next_time);
        }
    

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 2012-09-09
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多