使用Robolectric 3.3.2我正在尝试构建片段并将其附加到活动。我试过Robolectric.buildFragment(MyFragment.class, MyActivity.class).create()
,但我得到异常android.content.res.Resources$NotFoundException: Unable to find resource ID #0x1 in packages [android, com.my.package.for.android]
。在使用Robolectric构建片段时无法找到资源ID
我也试着单独构建活动和片段,并使用片段管理器附加片段,但似乎片段自动附加到虚拟活动,因此我无法将其附加到我的活动中。
简约例如:
@RunWith(RobolectricTestRunner.class)
@Config(sdk = Build.VERSION_CODES.KITKAT, manifest = "./src/main/AndroidManifest.xml")
public class MyTest {
@Test
public void WorkingTest1() throws Exception {
Robolectric.buildFragment(MyFragment.class).create();
}
@Test
public void WorkingTest2() throws Exception {
Robolectric.buildActivity(MyActivity.class).create();
}
@Test
public void FailingTest() throws Exception {
Robolectric.buildFragment(MyFragment.class, MyActivity.class).create();
}
public static class MyActivity extends Activity {
}
public static class MyFragment extends Fragment {
}
}
我不知道你可以在'create'方法中指定id。这解决了这个问题,谢谢!我现在意识到我已经阅读了Google上的错误javadoc(我读取了org.robolectric.util.FragmentController的javadoc而不是org.robolectric.android.controller.FragmentController)。 – LoPoBo
请注意,正确的签名是'create(int contentViewId,Bundle bundle)':) – LoPoBo