Тестирование графического интерфейса Spring Boot Selenium WebDriver

Я разработал приложение Spring Boot/Angular JS. Теперь я пытаюсь реализовать некоторые тесты интерфейса GUI.

Я попытался использовать Selenium ChromeDriver, поэтому добавил зависимость Selenium:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.4.0</version>
</dependency>

И я создал свой первый тест:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyMainClass.class)
public class SeleniumTest {
    private WebDriver driver;

    @Before
    public void setup() {
        System.setProperty("webdriver.chrome.driver", "my/path/to/chomedriver");
        driver = new ChromeDriver();
    }

    @Test
    public void testTest() throws Exception {
        driver.get("https://www.google.com/");
    }
}

Это прекрасно работает. Но теперь я хочу получить страницы своего приложения с помощью:

driver.get("http://localhost:8080/");

Но я получаю «ERR_CONNECTION_REFUSED» в браузере Chrome.

Я думаю, это потому, что мне нужно настроить свой тест для запуска моего веб-приложения, прежде чем запускать тест, но я не знаю, как этого добиться?


person JeanJacques    schedule 19.05.2017    source источник


Ответы (1)


В вашем случае служба не запущена. Попробуйте что-то вроде этого.

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class SeleniumTest {
    @LocalServerPort
    private int port;
    private WebDriver driver;

    @Value("${server.contextPath}")
    private String contextPath;
    private String base;

    @Before
    public void setUp() throws Exception {
        System.setProperty("webdriver.chrome.driver", "my/path/to/chromedriver");
        driver = new ChromeDriver();
        this.base = "http://localhost:" + port;
    }

    @Test
    public void testTest() throws Exception {
        driver.get(base + contextPath);
    }
}

ОБНОВИТЬ:

Добавьте зависимость

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
person StanislavL    schedule 19.05.2017
comment
Springboot, похоже, не распознает аннотацию @SpringBootTest - person JeanJacques; 19.05.2017
comment
Перед вашим ответом я пытался добавить @IntegrationTest, и, похоже, это работает, но, вероятно, это неправильный способ!? - person JeanJacques; 19.05.2017
comment
Основная проблема заключается в том, чтобы позволить тестовому запуску вашего весеннего загрузочного приложения. Я написал свой способ, но есть и другие. - person StanislavL; 19.05.2017
comment
Вы можете использовать плагин Spring Boot Maven для запуска контейнера до того, как ваши тесты селена будут запущены в Maven, - person PaulNUK; 19.05.2017
comment
@StanislavL Ваш ответ не работал, потому что мой проект находился под старой версией Spring Boot (1.2.6). Я обновил его до 1.5.3, и он работает. Спасибо ! - person JeanJacques; 30.05.2017