Этот пост описывает, как реализовать тесты 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 { } @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 Джерома Версринга в блоге технических заметок .