2017-08-04 2 views
3

J'utilise Espresso/Kotlin pour exécuter des tests pour notre application Android et je veux exécuter l'installation une fois pour tous les tests dans la classe de test donnée.Android Espresso - comment exécuter l'installation une seule fois pour tous les tests

J'ai créé un objet compagnon pour lancer l'application une fois (ce qu'il fait), mais il se ferme et ne reste pas ouvert pendant que chaque test s'exécute.

enter image description here

Comment puis-je avoir à lancer l'application, exécuter tous les tests dans la classe de test, puis fermez l'application?

J'ai aussi essayé ce qui suit, mais il lance encore une fois puis ferme, puis tente d'exécuter les tests: enter image description here

+0

il n'y a pas de problème des règles de junit4 et setUp statique. peut-être que l'activité est détruite par 'ActvityTestRule'. –

Répondre

0

C'est par la conception.

Cette règle fournit des tests fonctionnels d'une seule activité. L'activité en cours de test sera lancée avant chaque test annoté avec @Test et avant toute méthode annotée avec @Before. Il sera terminé une fois le test terminé et toutes les méthodes annotées avec @After sont terminées. L'activité testée est accessible pendant votre test en appelant ActivityTestRule.getActivity().

Source: JUnit4 Rules

Vous pourriez être en mesure de contourner le problème en faisant une règle personnalisée. Sinon, vous pouvez créer un seul @Test et y placer chacune de vos assertions. Pour conserver votre format général, vous pouvez placer vos assertions dans des fonctions privées distinctes.

Par exemple:

@Test 
fun testLoginPage() { 
    testLoginButtonIsDisplayed() 
    // call other private functions 
} 

private fun testLoginButtonIsDisplayed() { 
    loginPage.loginButton.check(matches(isDisplayed())) 
} 

// add other private functions