Utiliser les mêmes pilotes web tout au long de sélénium suite
J'ai un à la suite de sélénium de la suite de tests d'hériter de la même classe de base, comment j'ai les tests utilisent la même instance de pilote, quand je lance le test complet de la suite?. Je veux aussi de l'exécution des tests dans l'isolement aswell. Je crois que ceci vous permettra de réduire le temps nécessaire pour exécuter la suite considérablement.
Ce test est exécuté à partir de maven qui exécute à son tour chaque classe de test.
@RunWith(Suite.class)
@SuiteClasses({
AdminPortalTestSuite.class,
DevPortalTestSuite.class,
CommonTestSuite.class
})
public class SeleniumTestSuite {
}
Baseclass tous les tests hériter de
@BeforeClass
public static void setUp() throws Exception {
if (null == baseUrl || !baseUrl.startsWith("https://")) {
baseUrl = "https://localhost:8443";
}
if (null == browser || browser.startsWith("${")) {
browser = "firefox";
}
//retrieve properties including locale.
retrieveProperties();
Thread.sleep(4000);
setUpDriver();
}
@After
public void tearDownAfterTest() {
openUrl(LIST_PARTNERS);
adminPortalLogout();
openUrl(DASHBOARD);
developerPortalLogout();
driver.manage().deleteAllCookies();
}
@AfterClass
public static void tearDown() throws Exception {
BaseFunctionalTestCase.driver.quit();
}
exemple de test
public class APApplicationFunctionalTestCase extends BaseFunctionalTestCase {
/**
* Test validation when creating a new application.
*/
@Test
public void testApplicationValidation() {
Assume.assumeTrue(preHtml5);
final String partnerName = randomize("partner");
//create partner
createPartnerThroughAP(partnerName);
adminPortalLogin();
openUrl(ADD_APPLICATION + partnerName);
waitForId("applicationView.applicationName");
findById("submit-button").click();
waitForId("submit-button");
//check validation
assertTrue("Failed to validate application name",
isTextPresent(resolveAPMessage("partner", "application.messages",
"NotEmpty.applicationEditView.applicationView.applicationName")));
assertTrue("Failed to validate application username",
isTextPresent(resolveAPMessage("partner", "application.messages",
"NotEmpty.applicationEditView.applicationView.applicationUserName")));
assertTrue("Failed to validate application password",
isTextPresent(resolveAPMessage("partner", "application.messages",
"Password.applicationEditView.applicationView.applicationPassword")));
assertTrue("Failed to validate application password confirmation",
isTextPresent(resolveAPMessage("partner", "application.messages",
"Length.applicationEditView.applicationPasswordConfirmation")));
}
OriginalL'auteur john | 2012-01-24
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas grande avec JUnit... on dirait que vous essayez la solution proposée ici:
Avant et Après la Suite de l'exécution de crochet dans jUnit 4.x
qui pourrait suggérer que vous devriez déplacer votre @BeforeClass dans votre SeleniumTestSuite classe.
OriginalL'auteur lukeis
C'est la façon dont je l'ai fait. Dans SeleniumTestSuite, j'ai ajouté un statique WebDriver et de l'instancier dans setUp() la méthode annotée avec @BeforeClass. Ensuite, dans la classe de Base que tous mes sélénium tests hériter de la, j'ai ajouté un getDriver() la méthode, qui va essayer d'obtenir la statique pilote de SeleniumTestSuite. Si ce pilote est null, un nouveau est instanciée et retourné. Ainsi, lorsque le sélénium classes de test sont en cours d'exécution par la suite, ils vont utiliser le pilote de SeleniumTestSuite, et quand ils sont en cours d'exécution individuellement, ils vont utiliser leur propre pilote.
SeleniumTestSuite:
BaseSeleniumTest:
AbcSeleniumTest:
OriginalL'auteur Ron Martinez