Verwenden von Robolectric 3.3.2 Ich versuche, ein Fragment zu erstellen und es an eine Aktivität anzuhängen. Ich habe versucht Robolectric.buildFragment(MyFragment.class, MyActivity.class).create()
, aber ich bekomme Ausnahme android.content.res.Resources$NotFoundException: Unable to find resource ID #0x1 in packages [android, com.my.package.for.android]
.Ressource-ID beim Erstellen eines Fragments mit Robolectric nicht gefunden
Ich habe auch versucht, die Aktivität und Fragment separat zu erstellen und das Fragment mit dem Fragment-Manager anhängen, aber es scheint, dass das Fragment automatisch an eine Dummy-Aktivität angefügt ist, so kann ich es nicht an meine Aktivität anhängen.
Minimalistic Beispiel:
@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 {
}
}
Ich war mir bewusst, dass Sie die ID in der 'create' Methode angeben können. Dies löst das Problem, danke! Mir ist jetzt klar, dass ich das falsche Javadoc auf Google gelesen habe (ich habe javadoc für org.robolectric.util.FragmentController statt org.robolectric.android.controller.FragmentController gelesen). – LoPoBo
Beachten Sie, dass die richtige Signatur 'create (int contentViewId, Bundle bundle)' ist :) – LoPoBo