我有
的测试文章@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 。
几个问题:
这似乎是一种已知行为,如Spring Boot Sample Data Tests中的评论所示。有没有关于这种行为的文件?
答案 0 :(得分:3)
我最近遇到了同样的情况,并已打开spring-projects/spring-boot#13008来记录此行为。因此,在即将发布的1.5.13.RELEASE
和2.0.2.RELEASE
中将添加以下对参考手册的补充:
当测试上下文框架缓存上下文时,默认情况下禁用JMX以防止相同的组件在同一域上注册。如果此类测试需要访问MBeanServer,请考虑将其标记为脏:
@RunWith(SpringRunner.class)
@SpringBootTest(properties = "spring.jmx.enabled=true")
@DirtiesContext
public class SampleJmxTests {
@Autowired
private MBeanServer mBeanServer;
@Test
public void exampleTest() {
// ...
}
}