Robolectric shadow activity.findViewById返回null

时间:2014-05-17 05:33:01

标签: android unit-testing robolectric

Robolectric shadow activity.findViewById返回null。

这是一项相当简单的练习。所有这些都与此类似,所以应该很简单。想知道是否有其他人正在经历这个。代码如下。

@Test
public void shouldFindViewsById(){


    activity = Robolectric.buildActivity(DeckardActivity.class).create().visible().get();

    assertThat(activity).isNotNull();

    TextView textView = (TextView) activity.findViewById(R.id.textView);
    assertThat(textView).isNotNull();

    Button button = (Button) activity.findViewById(R.id.button);
    assertThat(button).isNotNull();

    EditText editText = (EditText) activity.findViewById(R.id.editText);
    assertThat(editText).isNotNull();

}

1 个答案:

答案 0 :(得分:0)

我希望您使用基于DeckardActivity的https://github.com/robolectric/deckard-gradle示例?

原始布局仅包含ID为R.id.text

的视图
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="vertical"
          android:layout_width="match_parent"
          android:layout_height="match_parent">
    <TextView
    android:id="@+id/text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:text="Hello Espresso!"
    />
</LinearLayout>

检查您是否导入了正确的示例R class import com.example.R;并尝试执行以下测试代码段:

activity = Robolectric.buildActivity(DeckardActivity.class).create().visible().get();

assertThat(activity).isNotNull();

TextView textView = (TextView) activity.findViewById(R.id.text);
assertThat(textView).isNotNull();

如果你喜欢这里是robolectric测试的一个扩展例子https://github.com/nenick/android-gradle-template