Как вы можете утверждать, что данный contentView установлен с использованием Robolectric? - PullRequest
1 голос
/ 18 февраля 2012

Учитывая следующий пример onCreate()

@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(), но я хочу, чтобы макет не был отдельным элементом представления.

Спасибо

1 Ответ

2 голосов
/ 19 февраля 2012

Попробуйте метод 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"

Надеюсь, это поможет.

...