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

用动态值覆盖Junit测试中默认的Spring-Boot Application.Properties设置

斜浩穰
2023-03-14

我想在测试中重写Application.properties中定义的属性,但@TestPropertySource只允许提供预定义的值。

我需要的是在一个随机端口N上启动一个服务器,然后将这个端口传递给spring-boot应用程序。端口必须是短暂的,以允许在同一主机上同时运行多个测试。

我指的不是嵌入式http服务器(jetty),而是在测试开始时启动的一些不同的服务器(例如zookeeper),并且被测试的应用程序必须连接到它。

实现这一点的最佳方法是什么?

(这里有一个类似的问题,但答案没有提到临时端口的解决方案--覆盖Junit测试中默认的Spring-Boot Application.Properties设置)

共有1个答案

彭畅
2023-03-14

您可以重写@BeforeClass中port属性的值,如下所示:

@BeforeClass
public static void beforeClass() {
    System.setProperty("zookeeper.port", getRandomPort());
}
 类似资料:
  • 对不起我的英语。我对junit测试有问题。客户机要求覆盖所有类,即使是dto/model/entity(即使是错误的,我也必须这样做)。但我在测试getter和setter时遇到困难。我无法覆盖,我已经测试了许多解决方案,但要么覆盖率为0,要么出现错误,我该怎么办? 我的班级: 我的班级测试 always error,例如last when:when()需要的参数必须是“模拟的方法调用”。例如:w

  • 并且,对于不同的目标服务器,目标路径每次都将不同! 清洁/家居对我来说不是一个选择。不幸的是,这里的答案对我来说不是很清楚。

  • 我使用的是spring cloud Consult 1.0.0.m5和spring boot 1.3.2。spring cloud Consult用于连接到Consult代理的默认主机和端口是localhost:8500。我想改变这一点,但迄今为止我尝试的每一种方法都不尊重设置。 我查看了spring cloud Consult的源代码,并且ConsulProperties是在属性前缀spring

  • 我有一个spring引导应用程序,其中默认属性设置在类路径(src/main/resources/application.properties)中的文件中。 我想用文件(src/test/resources/test.properties)中声明的属性重写JUnit测试中的一些默认设置 我通常有一个专用的配置类用于我的Junit测试,例如。 我首先认为在TestConfig类中使用就可以完成任务,

  • 我有一个bean,它使用@value注释填充属性,如下所示 在我的应用程序上下文中,我有以下配置 当values.properties文件不存在时,默认值“none”会按预期设置,但是当属性文件存在时,默认值仍会使用,即使我收到一条日志消息,说明属性文件是从PropertyPlaceholderConfigurer加载的 只有当属性文件丢失和/或占位符不可解析时,我才需要默认值生效;不是一直都是。

  • 问题内容: 我已经在现有的mysql数据库中反映了表的负载。我想表示的是,任何表中具有特定名称的任何列默认为datetime.now()。但是,天真地遍历表和列,仅对那些我发现具有特定名称的表和列设置默认设置是行不通的。session.flush()我收到以下错误: 这似乎与对_set_parent的调用(以及在sqlalchemy.schema的第721行中的调用)有关。 有谁知道是否有办法做到