Статьи

Весенние тесты селена с аннотациями

Этот пост описывает, как реализовать тесты Selenium в Java. Это вдохновлено от почты Алексом Коллинзом , с аннотациями. Код доступен на GitHub в каталоге Spring-Selenium-Test. Некоторые альтернативные и более легкие методы доступны для модульного тестирования приложения Spring MVC. Информацию о сервисах модульного тестирования смотрите здесь .

Страница, Конфигурация и Контроллер

Мы создаем простую страницу с «Hello World»:

01
02
03
04
05
06
07
08
09
10
11
12
<!doctype html>
<html lang='en'>
<head>
  <meta charset='utf-8'>
  <title>Welcome !!!</title>
</head>
<body>
  <h1>
   Hello World !
  </h1>
</body>
</html>

Мы держим наш контроллер очень простым:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
@EnableWebMvc
@Configuration
@ComponentScan(basePackages = 'com.jverstry')
public class WebConfig extends WebMvcConfigurerAdapter {
 
    @Bean
    public ViewResolver getViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix('WEB-INF/pages/');
        resolver.setSuffix('.jsp');
        return resolver;
    }
 
}

и наш контроллер тоже:

1
2
3
4
5
6
7
8
9
@Controller
public class MyController {
 
    @RequestMapping(value = '/')
    public String home() {
        return 'index';
    }
 
}

Для тестирования селена

Мы создаем конфигурацию для тестирования. Он предоставляет URL-адрес, чтобы открыть приложение локально. Приложение открывается с помощью Firefox:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
@Configuration
public class TestConfig {
 
    @Bean
    public URI getSiteBase() throws URISyntaxException {
        return new URI('http://localhost:10001/spring-selenium-test-1.0.0');
    }
 
    @Bean(destroyMethod='quit')
    public FirefoxDriver getDrv() {
        return new FirefoxDriver();
    }
 
}

Мы также определяем абстрактный класс как основу для всех тестов. Он автоматически закрывает Firefox после теста:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={ TestConfig.class })
public abstract class AbstractTestIT {
 
    @Autowired
    protected URI siteBase;
 
    @Autowired
    protected WebDriver drv;
 
    {
        Runtime.getRuntime().addShutdownHook(new Thread() {
           @Override
           public void run() {
                drv.close();
           }
        });
    }
 
}

И мы реализуем тест на селен, где мы проверяем, что наша страница содержит «Hello World»:

1
2
3
4
5
6
7
8
9
public class SeleniumTestIT extends AbstractTestIT {
 
    @Test
    public void testWeSeeHelloWorld() {
        drv.get(siteBase.toString());
        assertTrue(drv.getPageSource().contains('Hello World'));
    }
 
}

Зависимости maven такие же, как те, которые описаны в посте Алекса Коллинза .

Сборка приложения

Если вы создадите приложение, оно автоматически откроет и закроет Firefox. Тест будет успешным.

Ссылка: Весенние тесты селена с аннотациями от нашего партнера JCG Джерома Версринга в блоге технических заметок .