2014-05-17 4 views
0

Robolectric 그림자 activity.findViewById가 null을 반환합니다.

이것은 매우 간단한 연습입니다. 모든 tuts는 이와 유사하므로 간단해야합니다. 다른 사람이이 문제를 겪고 있는지 궁금합니다. 코드는 다음과 같습니다.Robolectric 그림자 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(); 

} 

답변

0

예를 들어 DeckardActivity를 기반으로 한 https://github.com/robolectric/deckard-gradle 예를 사용 하시겠습니까?

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

assertThat(activity).isNotNull(); 

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

당신이 여기에 좋아하는 경우 :

는 원래의 레이아웃은 ID 방금 테스트 미리보기 다음 올바른 예를 들어, R 클래스 import com.example.R;를 가져 시도 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> 

검사와보기를 포함 robolectric 테스트를위한 확장 예제 https://github.com/nenick/android-gradle-template

+0

나는 다른 textview를 추가 했으므로 문제가되지 않습니다. 원본 'R.id.text'에서도 작동하지 않습니다. – kennyjoseph

+0

어리석은 질문 일지 모르지만 예제 앱을 시작하면 화면에 자신의 의견이 표시됩니까? – nenick

+0

우리는 똑같은 것을 분명히합니다 : clone deackard-gradle; assertThat (activity.findViewById (R.id.text))을 추가하십시오. isNotNull(); 기존 테스트로; ./gradlew 테스트 <-와 함께 테스트를 시작하면 나를 위해, 당신은 이것을 재현 할 수 있습니까? – nenick

관련 문제