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

Spring Boot OpenFigen随机端口测试

子车峰
2023-03-14

我有一个像这样设置的OpenFaigns客户端:

@FeignClient(name = "myService", qualifier = "myServiceClient", url = "${myservice.url}")
public interface MyServiceClient {
...
}

Spring启动测试设置如下:

@SpringBootTest(webEnvironment = RANDOM_PORT, classes = MyApplication.class)
@RunWith(SpringRunner.class)
@EnableFeignClients(clients = MyServiceClient .class)
public class ReservationSteps {
...
}

测试的目的是启动应用程序,并使用假客户端向其发送请求。

问题在于随机_端口值。

如何在属性文件中声明“myservice.url”属性,以便它包含正确的端口?

我已经尝试过了:

myservice.url=localhost:${local.server.port}

但结果是“localhost:0”。

我不想对端口使用常量值。

请帮忙。谢谢

共有1个答案

涂溪叠
2023-03-14

我知道这是一个老问题,但也许这个答案会对某人有所帮助

作为一种解决方法,我们可以做的是让主机解析到Spring Ribbon。然后在测试开始之前动态配置主机。

首先,如果还没有maven依赖项,那么添加它

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
   <scope>test</scope>
</dependency>

然后将测试配置为使用主机的“空”配置url运行,即myservice。url此处的属性

@SpringBootTest(webEnvironment = RANDOM_PORT, classes = MyApplication.class)
@RunWith(SpringRunner.class)
@EnableFeignClients(clients = MyServiceClient.class)
@TestPropertySource(properties = "myservice.url=") // this makes sure we do the server lookup with ribbon
public class MyTest {
   ...
}

然后,在一个方法中,我们所需要做的就是为ribbon提供服务url,我们可以用一个简单的ystem.set属性()

public class MyTest {

    @LocalServerPort
    private int port;

    @Before
    public void setup() {
        System.setProperty("MyServiceClient.ribbon.listOfServers", "http://localhost:" + port);
        ...
    }
 类似资料:
  • 我使用的是spring boot 1.3.6,我的JUNIT测试用例运行良好,在升级到spring boot 1.4.0并尝试删除不推荐的类后,我遇到了错误 我与1.3. x的JUNCLASS 我的类与1.4.0 已完成更新 < li >用spring建议的模板删除了已弃用的TestRestTemplate < li >使用SpringRunner而不是SpringJUnit4ClassRunne

  • 在我的spring boot应用程序中,我使用eureka进行服务发现,使用ribbon进行负载平衡。当我在固定端口上运行我的注册到eureka的微服务时,它工作正常,但当我在随机端口上运行它们时,虽然我可以看到在eureka仪表板上注册的服务,但它无法找到端口号。当我尝试点击服务时,我得到了下面的错误。 这是我的控制器类,我从其中调用另一个服务。 这是我添加的属性 我的服务是在名为MYAPP的e

  • 问题内容: 您将如何测试随机数生成器是否正在生成实际的随机数? 我的方法:首先建立一个大小为M的散列,其中M是素数。然后取由随机数生成器生成的数字,并用M取mod,然后看它是否填充了所有散列或仅填充了一部分。那是我的方法。我们可以通过可视化证明吗? 由于我对测试的了解很少。您能建议我彻底解决这个问题吗?提前致谢 问题答案: 您应该意识到,您不能 保证 随机数生成器正常工作。请注意,即使是[1,10

  • 本文档提供两种方式获取HPB随机数,对应两种接口。 一种是通过RPC接口获取历史随机数; 一种是通过智能合约使用最新随机数。 接口定义 通过RPC接口获取历史随机数 接口名称 :hpb_getRandom 参数 :块号 ,整形数字或者字符串”latest” 返回值:随机数,string, 使用“latest”查询最新块中的随机数 调用示例: curl -X POST -H "Content-Typ

  • 问题内容: 我在Python-Django网站上工作。我使用GIT作为我的VCS。对于持续集成,我使用Jenkins CI。我已经使用Python设置了两个虚拟环境,一个用于开发,另一个用于预生产。 我的问题:我为网站编写了许多单元测试,回归测试和冒烟测试。我的开发和预生产虚拟环境都连接到Jenkins CI。 最近,每当将代码更改推送到Jenkins CI中的两种环境时,测试都会随机失败。有时,

  • 本文向大家介绍python随机数分布random测试,包括了python随机数分布random测试的使用技巧和注意事项,需要的朋友参考一下 因为概率问题,所以需要测试一下python的随机数分布。到底是平均(均匀)分布,还是正态(高斯)分布。 测试代码如下: 测试结果: Test random.choice()---------------------------: loop num:  1000