En utilisant TestNG pour mon framework Selenium, la méthode setUp est relativement complexe. Il y a plusieurs points qu'il peut casser et je voudrais le diviser en étapes séparées.Plusieurs niveaux de setUp/tearDown dans TestNG?
Idéalement, il ressemblerait à quelque chose comme ceci:
// Does some DB stuff, logs some messages
@BeforeMethod(alwaysRun = true)
preTestCase
// Instantiates and opens up Selenium
@BeforeMethod(dependsOnMethods = {"preTestCase"})
seleniumSetup
// Closes Selenium only if it was properly setup
@AfterMethod(dependsOnMethods = {"seleniumSetup"})
seleniumTearDown
// All other test case teardown, error logging
@AfterMethod(alwaysRun=true)
postTestCase
Ce que je veux éviter est un échec dans preTestCase en raison d'un problème DB et obtenir un échec secondaire en raison de seleniumTearDown essayant de fermer une instance inexistante . Dans cette situation, seul postTestCase doit être exécuté. J'obtiens cette erreur: seleniumTearDown() n'est pas autorisé à dépendre du public seleniumSetUp (org.testng.ITestContext). Est-ce que ce n'est pas permis/mauvais design? Comment puis-je appliquer l'ordre d'exécution entre les deux méthodes tearDown afin que postTestCase() soit toujours exécuté en dernier, indépendamment du fait que seleniumTearDown soit exécuté?
Ceci est un exemple simplifié. L'objectif est d'éviter les contrôles manuels et d'augmenter la granularité des pannes en exploitant les outils intégrés de TestNG. – dhackner