指定端口时弹簧启动执行器端点不起作用的单元测试
2022-09-03 02:28:39
最近,我更改了弹簧启动属性以定义管理端口。在这样做的过程中,我的单元测试开始失败:(
我编写了一个单元测试,测试了 /metrics 终结点,如下所示:
@RunWith (SpringRunner.class)
@DirtiesContext
@SpringBootTest
public class MetricsTest {
@Autowired
private WebApplicationContext context;
private MockMvc mvc;
/**
* Called before each test.
*/
@Before
public void setUp() {
this.context.getBean(MetricsEndpoint.class).setEnabled(true);
this.mvc = MockMvcBuilders.webAppContextSetup(this.context).build();
}
/**
* Test for home page.
*
* @throws Exception On failure.
*/
@Test
public void home()
throws Exception {
this.mvc.perform(MockMvcRequestBuilders.get("/metrics"))
.andExpect(MockMvcResultMatchers.status().isOk());
}
}
以前,这已经过去了。添加后:
management.port=9001
测试开始失败,如下所示:
home Failed: java.lang.AssertionError: Status expected: <200> but was: <404>
我尝试用以下方法更改@SpringBootTest注释:
@SpringBootTest (properties = {"management.port=<server.port>"})
其中 是用于服务器端口的编号。这似乎没有任何区别。
因此,随后将属性文件中的 management.port 值更改为与 server.port 相同。同样的结果。
使测试正常工作的唯一方法是从属性文件中删除 management.port。
任何建议/想法?
谢谢