Ich habe viele Beiträge gelesen und die Dokumentation zu Android Instrumentation Tests gelesen, kann aber meinen Code nicht zum Laufen bringen.Gültiger (nicht null) Kontext für Android-Instrumentierungstest erhalten
Mein Szenario ist, dass ich ein Mock Context-Objekt nicht verwenden kann, ich brauche ein gültiges.
Ich habe versucht mit:
@Before
public void setUp() throws Exception
{
super.setUp();
setActivityInitialTouchMode(true);
// Injecting the Instrumentation instance is required
// for your test to run with AndroidJUnitRunner.
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
_context = getActivity();
assertThat(_context, isA(Context.class));
}
Aber ich bekomme
java.lang.RuntimeException: Es konnte keine Aktivität starten
Ich habe versucht, meinen Test InstrumentationTest verlängern mit und unter Verwendung von getInstrumentation(). GetContext()
Aber das ist auch null.
Von was ich verstehe Instrumentation Tests sind für genau das: wenn Sie die Anwendung (d. H. Kontext) verwenden müssen.
Wissen Sie also, wie ich in der Umgebung von Android Studio 2.0 mit junit4 auf ein gültiges Kontextobjekt zugreifen kann, das nicht null ist?
Hier ist mein aktueller bester Versuch:
@RunWith(AndroidJUnit4.class)
@SmallTest
public class StartWorkoutRadialProgressBarTest extends ActivityInstrumentationTestCase2
{
Context _context;
public StartWorkoutRadialProgressBarTest()
{
super(StartWorkoutRadialProgressBar.class);
}
@Before
public void setUp() throws Exception
{
super.setUp();
setActivityInitialTouchMode(true);
// Injecting the Instrumentation instance is required
// for your test to run with AndroidJUnitRunner.
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
_context = getActivity();
assertThat(_context, isA(Context.class));
}
@Test
public void initialization()
{
StartWorkoutRadialProgressBar bar = new StartWorkoutRadialProgressBar(100,100, _context);
Assert.assertThat(4, is(4));
}
}
Hinweis: context = new MockContext()
Verwendung nicht funktioniert, weil ich einen Fehler die Bibliothek, eine Ressource zu nennen versucht.
"java.lang.RuntimeException: Aktivität konnte nicht gestartet werden" - bitte zeigen Sie den gesamten Stack-Trace an. Außerdem demonstriert FWIW, [dieses Beispielprojekt] (https://github.com/commonsguy/cw-omnibus/tree/master/Testing/JUnit4) die Verwendung der veralteten "ActivityInstrumentationTestCase2" mit JUnit4, zusammen mit "InstrumentationRegistry.getTargetContext () 'und' ActivityTestRule'. – CommonsWare
Ich habe es gerade jetzt herausgefunden. Es war mein Konstruktor, es muss eine Aktivitätsklasse sein (die ActivityInstrumentationTestCase2 liefert nicht den Kontext, den ich brauche) – Aggressor