Espresso startActivity das kommt auf Vorsatz
Ich habe die folgende situation.
Meiner Tätigkeit hat sich ein fragment, das hängt von einem Serializable Objekt. Hier ist mein 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();
}
}
Aber in meinen Espresso-test, ich kann einfach nicht passieren der Absicht, die Aktivität, bevor es erstellt wird. Ich habe versucht, mit setActivityIntent mehrere Möglichkeiten, aber kann nicht herausfinden, wie es funktioniert.
Hier ist mein letzter Versuch:
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())));
}
}
Ich gesucht habe, eine Menge, aber nichts funktioniert. MyObject
ist immer null im test. Ich denke, das sollte einfach sein. Was bin ich vermisste?
Welche Fehlermeldung bekommen Sie?
Sie brauchen nicht, @Vor, denn dies ist ein JUnit-3-test nicht JUnit 4 test.
Gelöst war das problem mit meiner mock... Sorry für die Mühe.
Sie brauchen nicht, @Vor, denn dies ist ein JUnit-3-test nicht JUnit 4 test.
Gelöst war das problem mit meiner mock... Sorry für die Mühe.
InformationsquelleAutor rafael | 2015-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie definieren die Absicht, auf diese Weise verwendet werden
InformationsquelleAutor Gabriele Mariotti
Können Sie überschreiben die ActivityTestRule.getActivityIntent() Methode und zurück eine erforderliche Vorsatz:
InformationsquelleAutor makovkastar
Es nicht so aussieht, wie Sie tatsächlich beginnen die Aktivität überall.
Versuchen Sie anrufen
getActivity()
auf die erste Zeile der testName().Damit starten Sie die Aktivität, die Sie übergeben, in der super-Konstruktor.
getActivity()
auf die erste Zeile der test-Methode und in der letzten ZeilesetUp()
aber hat nicht funktioniert =/Gelöst war das problem mit meiner mock... Sorry für die Mühe.
InformationsquelleAutor yogurtearl