2017-04-03 2 views
-1

J'ai écrit mes cas de test en utilisant l'expresso et l'automatisation de l'interface utilisateur dans android. Maintenant, quand je cours mes deux classes différentes de cas de test.Il donne toujours l'erreurSuite classe ne pas exécuter la deuxième classe de test dans espresso en utilisant junit4 android

java.lang.RuntimeException: Aucune activité trouvée. Avez-vous oublié de lancer l'activité en appelant getActivity() ou startActivitySync ou similaire?

et n'exécute pas la classe MainActivity2Test. Je ne suis pas capable de comprendre ce que je fais de mal. Recherche concernant cette erreur également mais pas en mesure de trouver une solution. Aidez-moi, s'il vous plaît.

AllTestsSuite.java

@RunWith(Suite.class) 
@Suite.SuiteClasses ({ 
     MainActivityTest.class, 
     MainActivity2Test.class, 

}) 
public class AllTestsSuite { 

} 

MainActivity.java

@FixMethodOrder(MethodSorters.NAME_ASCENDING) 
@RunWith(AndroidJUnit4.class) 
public class MainActivityTest { 
    UiDevice device; 

    @Rule 
    public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule(MainActivity.class, true, false); 

    @Test 
    public void test1_doLogin(){ 
     device = UiDevice.getInstance(getInstrumentation()); 
     device.pressHome(); 
     device.wait(hasObject(desc("Apps")), 3000); 
     UiObject2 appsButton = device.findObject(desc("Apps")); 
     appsButton.click(); 
     UiObject2 appsButton1 = device.findObject(desc("MyApp")); 
     appsButton1.click(); 
test2_emaillPass(); 
} 
@Test 
    public void test2_emaillPass(){ 
} 

} 

MainActivity2Test.java

@FixMethodOrder(MethodSorters.NAME_ASCENDING) 
@RunWith(AndroidJUnit4.class) 
public class MainActivity2Test { 
    UiDevice device; 
    @Rule 
    public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule(MainActivity.class, true, false); 

    @Test 
    public void test3_productFamily(){ 
     onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItemAtPosition(0, click())); 
     test4_Product(); 


    } 
    @Test 
    public void test4_Product() { 
     device = UiDevice.getInstance(getInstrumentation()); 
     onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItemAtPosition(0, click())); 
     device.wait(hasObject(By.text("First product")), 4000); 
     test5_Detail(); 
    } 

Répondre

0

Cette ligne est votre problème:

@Rule 
public ActivityTestRule<MainActivity> activityRule = new ActivityTestRule(MainActivity.class, true, false); 

Les derniers états des paramètres false si l'activité doit être lancée lorsque le test commence, voir la signature de la méthode:

public ActivityTestRule(Class<T> activityClass, boolean initialTouchMode, 
     boolean launchActivity) 

Donc soit vous changer cette dernière drapeau true ou vous lancez manuellement votre activité dans chaque test comme ceci:

mActivityRule.launchActivity(null); 
+0

changé dernier drapeau à vrai, mais encore obtenir l'erreur –

+0

en faisant dernier drapeau vrai, par l'application est d'obtenir beaucoup de rafraîchissement times.And également lancer NullPointer Exception –