Espresso startActivity qui dépend de l'Intention

J'ai la situation suivante.

Mon activité a un fragment qui dépend d'un Objet Sérialisable. Voici mon onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    MyObject myObj = (MyObj) getIntent().getSerializableExtra("myobj");

    if(myObj != null) {
        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        transaction.add(R.id.container, MyFragment.newInstance(myObj));
        transaction.commit();
    }
}

Mais dans mon Espresso test, j'ai simplement ne peut pas passer de l'intention à l'activité avant sa création. J'ai essayé avec setActivityIntent de plusieurs manières mais ne peux pas comprendre comment le faire fonctionner.

Voici ma dernière tentative:

import android.content.Intent;
import android.support.test.InstrumentationRegistry;
import android.support.test.espresso.Espresso;
import android.test.ActivityInstrumentationTestCase2;
import org.junit.Before;

import static android.support.test.espresso.assertion.ViewAssertions.matches;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
import static android.support.test.espresso.matcher.ViewMatchers.withText;

public class MyActivityTest extends

     ActivityInstrumentationTestCase2<MyActivity> {

        private MyActivity activity;
        private MyObject myObj;

        public MyActivityTest() {
            super(MyActivity.class);
        }

        @Before
        protected void setUp() throws Exception {
            super.setUp();
            injectInstrumentation(InstrumentationRegistry.getInstrumentation());
            myObj = MyObject.mockObject();
            Intent i = new Intent();
            i.putExtra("myobj", myObj);
            setActivityIntent(i);

        }

        public void testName(){
            Espresso.onView(withId(R.id.name)).check(matches(withText(myObj.getObjName())));
        }

    }

J'ai beaucoup cherché mais rien ne fonctionne. MyObject est toujours nulle dans le test. Je pense que cela devrait être simple. Que suis-je suis absent?

  • Quel message d'erreur avez-vous?
  • vous n'avez pas besoin d' @Avant, parce que c'est un JUnit 3 test pas un JUnit 4 test.
  • Résolu, le problème était avec ma maquette... Désolé de déranger.
  • Solution de Kotlin prises à partir de ici
InformationsquelleAutor rafael | 2015-07-31