1

次のサンプルが与えられた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);
        }

}

私がやりたいのは、このアクティビティを単体テストして、アクティビティの作成時に渡されるエクストラに応じて、どちらかのコンテンツビューセットを取得できることを確認することです。

私のロボレクトリックテストでは、これまでに次のことがあります。

@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()ませんでしたが、個々のビューアイテムではなくレイアウトが必要です。

ありがとう

4

1 に答える 1

3

ShadowActivityでメソッドgetContentView()を試してください:

import com.xtremelabs.robolectric.Robolectric._

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

レイアウトに id があることを確認してください:

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

それが役立つことを願っています。

于 2012-02-18T22:56:35.487 に答える