当前位置: 首页 > 知识库问答 >
问题:

spring-引导抛出连接被拒绝的集成测试

夹谷星纬
2023-03-14

我在spring靴子上有一个

@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);
    }

如果我对已启动的应用程序启动测试-测试确定如果我尝试只启动它,则会出现连接拒绝错误。

My Application.Properties对于单一启动和测试是相同的,并且位于resources和TestResources中。

application.class是

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个答案

叶阳
2023-03-14

您必须使用正在运行的服务器运行测试,

如果需要启动一个完全运行的服务器,则必须使用随机端口,如果使用@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);
       }

}
 类似资料:
  • 我的/etc/hosts文件如下所示: 不确定该怎么办?字面上假设我可以传递localhost和port,它应该可以工作。

  • 问题内容: 我是 HBase 和 Hadoop的 新手。我已经完全设置了HBase并完美启动。现在,当我尝试使用Java客户端从 p1 连接到HBase(HBase安装在 p2上 )时,它抛出了一个奇怪的异常。 问题答案: 我找到了解决方案。 通过仅从我的 主机中 删除 localhost 条目。现在我的本地主机条目就像 192.169.19.50 [这是我的hbase IP] =本地主机,而不是

  • 问题内容: 我正在尝试实现TCP连接,从服务器端一切正常,但是当我运行客户端程序(从客户端计算机)时,出现以下错误: 我尝试更改套接字号以防万一,但无济于事,有谁知道导致此错误的原因和解决方法。 服务器代码: 客户代码: 问题答案: 此异常意味着你尝试连接的IP /端口上没有侦听服务: 你试图连接到错误的IP /主机或端口。 你尚未启动服务器。 你的服务器没有监听连接。 在Windows服务器上,

  • 我无法连接到RabbitMQ。RabbitMQ不在本地计算机上。 我的应用程序.属性看起来像 我可以使用https://urltologinscreen:15671访问Rabbitmq gui 我得到以下错误 如何解决问题?

  • 我试着让我的selenium测试在debian服务器上运行,但是我一直从我的GeckoDriver得到连接拒绝错误。在运行Ubuntu的本地机器上,它运行得很好。你们谁知道怎么了?我找不到任何有用的东西。 OS:Debian Jessie 构建工具:Gradle Java-版本:8 设置方法 错误信息

  • 我在unbundu机器中使用JMeter设置了一个分布式负载测试环境。 - - - - 系统上的防火墙已关闭 -所有计划的主和从都在同一个子网中 -JMeter 服务器可以访问目标。 -所有系统上的JMeter版本相同(版本2.3.4)。 1) 尝试通过ubundu终端从主设备ping到从设备,反之亦然。它正在发生。。 2) 在客户端(主)jmeter 属性中添加了以下内容: 3) 在服务器(从属