2012-02-18 6 views
1

Учитывая следующий образец onCreate()Как вы можете утверждать, что заданный контентView установлен с помощью Robolectric?

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    Bundle extras = getIntent().getExtras(); 
    if (extras != null && (null != extras.getString("myVar"))) 
    { 
     setContentView(R.layout.success); 
    } 
     else 
     { 
       setContentView(R.layout.failure); 
     } 

} 

То, что я хочу сделать, это модульное тестирование этой деятельности, чтобы убедиться, что я могу получить любой контент набора вида в зависимости от дополнительных услуг, которые передаются при создании активности.

я следующий до сих пор в моем Robolectric тесте:

@Test 
public void testNullExtrasSetsFailureView() 
{ 
    myActivity.onCreate(null); 
     // This is the bit I'm struggling with, how to obtain content view? 
    assertThat("the view the onCreate loads..", equalTo(R.layout.failure)) 
} 

Как я могу добиться этого? Я просмотрел API, и я не видел никакого очевидного способа поиска содержимого, кроме findViewById(), но я хочу, чтобы макет не был отдельным элементом представления.

Благодаря

ответ

2

Попробуйте метод getContentView() на ShadowActivity:

import com.xtremelabs.robolectric.Robolectric._ 

assertEquals(R.id.failure, shadowOf(myActivity).getContentView().getId()) 

Убедитесь, что ваш макет имеет идентификатор:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/failure" 

Надежда, что помогает.