gpt4 book ai didi

java - Spring Boot 测试不使用 jmx 属性

转载 作者:行者123 更新时间:2023-11-30 06:45:28 26 4
gpt4 key购买 nike

我有一个测试类

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
public class Foo{
...
}

它应该启动一个常规应用程序上下文,定义如下:

@SpringBootApplication(scanBasePackages = {"de.foo", "de.bar"})
public class Application {
...
}

这按预期工作。此外,我有一个 application.yml 在这两种情况下都会加载,但在运行测试时,JMX 的属性(spring.jmx.enabled)不会加载或不会被使用。

我尝试了不同的属性文件(application.yml、application-test.yml),但唯一有效的是通过设置属性

@TestPropertySource(properties = "spring.jmx.enabled:true")

在常规应用程序上下文中,该属性默认为true

几个问题:

  1. 为什么测试类中的默认值不同?
  2. 为什么从 application.yml 加载该属性时未加载或识别该属性(yml 的其余部分有效,因此它确实已加载)。

这似乎是一种已知行为,如 Spring Boot Sample Data Tests 中的评论所示。 。我是否错过了有关此行为的任何文档?

最佳答案

我自己最近也遇到了同样的情况,打开了spring-projects/spring-boot#13008记录此行为。因此,即将发布的 1.5.13.RELEASE2.0.2.RELEASE 中将添加引用手册的以下内容:

As the test context framework caches context, JMX is disabled by default to prevent identical components to register on the same domain. If such test needs access to an MBeanServer, consider marking it dirty as well:

@RunWith(SpringRunner.class)
@SpringBootTest(properties = "spring.jmx.enabled=true")
@DirtiesContext
public class SampleJmxTests {

@Autowired
private MBeanServer mBeanServer;

@Test
public void exampleTest() {
// ...
}

}

关于java - Spring Boot 测试不使用 jmx 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48950844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com