Этот пост описывает, как реализовать тесты 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
|
@Controllerpublic 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
|
@Configurationpublic class TestConfig { @Bean public URI getSiteBase() throws URISyntaxException { } @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 Джерома Версринга в блоге технических заметок .