Ich muss eine einzelne Aktivität in meiner Android App testen. Die Dokumentation von ActivityInstrumentationTestCase2
sagt:ActivityInstrumentationTestCase2 vs ActivityTestRule
Diese Klasse bietet Funktionstests einer einzelnen Aktivität.
und die Dokumentation von ActivityTestRule
sagt:
Diese Regel Funktionsprüfung einer einzigen Aktivität zur Verfügung stellt.
Fast die gleichen Worte. Neben den beiden Samples, die ich programmiert habe, mache ich das gleiche. Also sollte ich ActivityTestRule
über ActivityInstrumentationTestCase2
oder umgekehrt bevorzugen?
Was ich sehe, ist, dass ActivityInstrumentationTestCase2
erstreckt wie ein (ist seine Vorfahren junit.framework.TestCase
und Prüfverfahren sollte mit dem Wort test
beginnen) JUnit3-Stil Test sucht.
Mit ActivityTestRule
package sample.com.sample_project_2;
import android.support.test.rule.ActivityTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.test.suitebuilder.annotation.LargeTest;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.typeText;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class ApplicationTest {
@Rule
public ActivityTestRule<SecAct> mActivityRule = new ActivityTestRule(SecAct.class);
@Test
public void foo() {
onView(withId(R.id.editTextUserInput)).perform(typeText("SAMPLE"));
}
}
Erweiterung ActivityInstrumentationTestCase2
package sample.com.sample_project_2;
import android.test.ActivityInstrumentationTestCase2;
import static android.support.test.espresso.Espresso.onView;
import static android.support.test.espresso.action.ViewActions.typeText;
import static android.support.test.espresso.matcher.ViewMatchers.withId;
public class ApplicationTest2 extends ActivityInstrumentationTestCase2<SecAct> {
public ApplicationTest2() {
super(SecAct.class);
}
@Override
protected void setUp() throws Exception {
super.setUp();
getActivity();
}
public void testFoo2() {
onView(withId(R.id.editTextUserInput)).perform(typeText("SAMPLE 2"));
}
}