Еще раз я здесь говорю о Selenium и тестах. Как я говорил в последнем посте « Функциональные тесты с Selenium 2.0» и «cargo-maven-plugin» , возникла проблема: если вы хотите внедрить новый тест Selenium и выполнить его, вы должны выполнить все тесты Selenium , но он неэффективен.
Итак, чтобы решить эту проблему, мы сможем выполнить конкретный тест с использованием maven в командной строке или в Eclipse IDE, что очень продуктивно, и я покажу, как это сделать, в виде простого теста JUnit или TestNG .
Прежде всего, мы создадим абстрактный класс, содержащий все необходимые классы для выполнения тестов Selenium в Eclipse IDE, и наши тесты должны расширять этот абстрактный класс. В этом классе будут, например, конфигурации для запуска / остановки сервера приложений, которые развернут наше приложение, и настройки для создания экземпляра сервера Selenium и его запуска двигателей.
Чтобы помочь менеджеру классов сервера приложений, мы будем использовать Cargo, а сервером приложений будет Tomcat 6x . После этого необходимо добавить зависимости Cargo и Selenium с областью тестирования для обоих. Их можно добавить с помощью Eclipse IDE или файла конфигурации maven (pom.xml), но в этом примере он добавлен в файл pom.xml, как показано ниже:
<dependency> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-core-container-tomcat</artifactId> <version>1.0.6</version> <scope>test</scope> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium</artifactId> <version>2.0a4</version> <scope>test</scope> </dependency>
/**
* Method responsable to set all init tomcat's configuration
*/
private TomcatExistingLocalConfiguration InitTomcatConfig() {
String tomcatHome = System.getenv("TOMCAT_HOME");
if (tomcatHome == null) {
throw new IllegalArgumentException("The system property TOMCAT_HOME must be defined.");
}
TomcatExistingLocalConfiguration localTomcatConfiguration = new TomcatExistingLocalConfiguration(tomcatHome);
return localTomcatConfiguration;
}
Метод найдет локальный экземпляр Tomcat по переменной среды с именем TOMCAT_HOME и создаст экземпляр, представленный классом TomcatExistingLocalConfiguration .
А теперь мы создадим метод, который запускает сервер приложений Tomcat перед запуском набора тестов, как показано ниже:
// Method execute before all suite tests
@BeforeSuite
public void setUp() {
LocalConfiguration tomcatConfiguration = InitTomcatConfig();
// Containers configuration utilizado("tomcat6x") and war path
war = new DefaultDeployableFactory().createDeployable("tomcat6x", "target/example.war",
DeployableType.WAR);
tomcatConfiguration.addDeployable(war);
// Tomcat configurations
container = new Tomcat6xInstalledLocalContainer(tomcatConfiguration);
container.setHome(tomcatConfiguration.getHome());
// Start o container
container.start();
}
После этого классы наших тестов Selenium должны расширить этот абстрактный класс и выполнить с нашими любимыми механизмами тестирования. В моем примере это был TestNG .
Это! Чтобы сделать код более понятным, создайте тесты и сделайте рефакторинг и поддержку приложений менее болезненными.
от: http://english.valdemarjr.net/2011/05/07/execute-selenium-tests-as-unit-test-in-eclipse-ide/
Извините за мой английский . Если у вас есть какие-либо вопросы или затруднения, свяжитесь со мной .