J'essaie d'écrire des tests d'interface utilisateur automatisés en utilisant Espresso et Concombre. Jusqu'à présent, j'ai réussi à exécuter des définitions d'étape pour une fonctionnalité qui teste une seule activité en utilisant ActivityTestRule
. J'utilise l'annotation @Before
de Cucumber pour préparer le scénario, par exemple lancer l'activité requise. Le problème est que lorsque j'essaie d'exécuter une suite de tests contenant plus d'une définition de fonctionnalité, tous les blocs @Before
seront appelés avant chaque scénario. Par exemple, lorsque le cœur d'instrumentation commence à exécuter le scénario 1, il exécute les méthodes @Before
à la fois dans le scénario 1 et le scénario 2, ce qui entraîne des chevauchements d'activités et des tests défaillants.Les crochets de concombre contrôlent le débit?
public class Activity1Stepdefs {
@Before
public void setUp() {
// Called before both scenario 1 and scenario 2, needs to be called only before scenario 1.
}
@Given("^scenario 1$")
public void scenario_1() throws Throwable {
// Scenario 1
}
}
public class Activity2Stepdefs {
@Before
public void setUp() {
// Called before both scenario 1 and scenario 2, needs to be called only before scenario 2.
}
@Given("^scenario 2$")
public void scenario_2() throws Throwable {
// Scenario 2
}
}
flux de contrôle résultant:
Activity1Stepdefs.setUp()
Activity2Stepdefs.setUp()
Activity1Stepdefs.scenario_1()
Activity2Stepdefs.setUp()
Activity1Stepdefs.setUp()
Activity2Stepdefs.scenario_2
flux de contrôle désiré:
Activity1Stepdefs.setUp()
Activity1Stepdefs.scenario_1()
Activity2Stepdefs.setUp()
Activity2Stepdefs.scenario_2
Ceci est un comportement normal des crochets avant. Si vous voulez utiliser différents avant les crochets. Puis convertissez avant le scénario en définition d'étape et ajoutez-le dans le scénario en tant que ligne d'histoire dans le fichier de caractéristiques. Ne pas utiliser avant scénario si vous voulez un comportement différent. – Murthi
Mais je continue à voir des exemples de personnes qui lancent des activités dans les hooks '@ Before' comme ici: https://stackoverflow.com/a/36012553/5963217 Donc, je suppose que ma question est: Quel serait le bon endroit pour préparer l'interface utilisateur pour le test alors? Je ne voudrais vraiment pas que mes fonctionnalités soient polluées avec la logique d'installation. – Julsteri