给出以下示例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()
之外,我看不到任何明显的内容视图定位方式,但我希望布局不是单独的视图项。
由于
答案 0 :(得分:2)
尝试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"
希望有所帮助。