Статьи

Выполните тесты Selenium как модульные тесты в Eclipse IDE

Еще раз я здесь говорю о  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>

После этого мы создадим метод для восстановления локального
экземпляра Tomcat :
 

 
 /**
 * 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/

Извините за мой английский . Если у вас есть какие-либо вопросы или затруднения,  свяжитесь со мной .