J'ai écrit quelques tests instrumentés, et les assertions passent - quelle que soit la configuration dans laquelle ils sont exécutés, l'exécution ne se termine jamais/finit - je dois terminer manuellement la course - qui est pas optimal pour une configuration CI.Test instrumenté Android en cours d'exécution
J'ai essayé de courir le code ci-dessous dans les configurations d'exécution suivantes:
- tous les tests dans la classe de test - dans ce cas, la course ne progresse pas sur le second test après l'exécution de la première
- Exécuter tous les tests dans le package de test - dans ce cas, l'exécution ne progresse pas sur le deuxième test après l'exécution du premier, mais tous les autres tests instrumentés dans d'autres classes réussissent.
- Exécuter les deux tests dans la classe d'essai séparément
Même si je prends mon code de test et mis dans des tests très simples (comme je l'ai fait ci-dessous) l'exécution de code ne se termine pas.
public class TestClass {
private MainActivity mainActivity;
private MyScreen myScreenInstance;
@Rule
public ActivityTestRule mActivityRule = new ActivityTestRule<>(MainActivity.class);
@Before
public void setUp() throws FileNotFoundException {
mainActivity = (MainActivity) mActivityRule.getActivity();
}
@Test
public void test_1() throws FileNotFoundException {
assertEquals(1,2);
}
@Test
public void test_2() throws FileNotFoundException {
assertEquals(2,2);
}
}
Pour le contexte, je suis en train de tester qu'un comportement touche dans une classe que je l'ai écrit sur le dessus d'un simple moteur de jeu écrit par un professeur, le code de test et affirmations que j'ai écrit tout le travail - mais le le problème est que la course ne se termine pas.
Dois-je avoir une sorte de méthode de «démontage» pour détruire le ActivityTestRule
? Que puis-je faire pour m'assurer que cette exécution se termine correctement? Il est intéressant de noter que ces assertions très simples fonctionnent avec succès sur l'API 25 sur un émulateur Nexus 7, mais lorsqu'elles sont exécutées dans un émulateur Nexus 5 exécutant l'API 23, les tests ne se terminent pas comme décrit ci-dessus.
Informations complémentaires:
- l'exécution des tests lentement avec le débogueur, pas à pas à travers les étapes - ils passent tous comme ils devraient
- ajouter un Thread.sleep (1000) à la @After (tearDown) méthode, le problème décrit cesse d'apparaître. Toutefois, cela ne résout pas ce problème car il notre course encore fois sur dans le laboratoire de test firebase (CI)
Ci-dessous une photo d'une course que j'ai commencé, puis 5 minutes plus tard, il est accroché. Il aurait dû effectuer 2 tests en < 2 secondes.
J'ai posté de nouvelles informations sur ce poste, je suis toujours activement à la recherche pour résoudre ce problème –