Интеграционные тесты на srping-boot throws Соединение отказано - PullRequest
0 голосов
/ 14 сентября 2018

у меня айтишник на пружинной загрузке

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
public class CustomerControllerIT {
    private RestTemplate restTemplate = new RestTemplate();

    @Test
    public void findAllCustomers() throws Exception {
        ResponseEntity<List<Customer>> responseEntity = restTemplate.exchange(
                "http://localhost:8080/Customer", HttpMethod.GET, null,
                new ParameterizedTypeReference<List<Customer>>() {
                });

        List<Customer> list = responseEntity.getBody();
        Assert.assertEquals(list.size(), 0);
    }

Если я запускаю тест на запущенном приложении - тесты в порядке Если я пытаюсь запустить только IT, возникает ошибка отказа в соединении.

Мои application.properties одинаковы для одиночного запуска и для тестов и находятся в ресурсах и testResources.

Application.class is

package mypackage;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

@ComponentScan({"mypackage"})
@EntityScan(basePackages = {"mypackage.model"})
@EnableJpaRepositories(basePackages = {"mypackage.persistence"})
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

1 Ответ

0 голосов
/ 15 сентября 2018

Вы должны запустить тест с работающим сервером ,

Если вам нужно запустить полнофункциональный сервер, вы должны использовать случайные порты, а если вы используете @ SpringBootTest (webEnvironment = WebEnvironment.RANDOM_PORT) , доступный порт выбирается случайным образом при каждом запуске теста.

вам нужна эта зависимость maven

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-test</artifactId>        
</dependency>

пожалуйста, прочитайте документацию для более ссылка

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)
public class TestRest {

    @Autowired
    private TestRestTemplate restTemplate;



      @Test
       public void findAllCustomers() throws Exception {
         ResponseEntity<List<Customer>> responseEntity = restTemplate.exchange(
            "/Customer", HttpMethod.GET, null,
            new ParameterizedTypeReference<List<Customer>>() {
            });

        List<Customer> list = responseEntity.getBody();
        Assert.assertEquals(list.size(), 0);
       }

}
...