最近我更改了我的彈簧引導屬性以定義管理端口。 這樣做,我的單元測試啓動失敗:(指定端口時Spring Boot Actuator端點的單元測試不起作用
我寫的測試/度端點如下單元測試:
@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>"})
凡用於server.port數量。這似乎沒有任何區別。
然後,將屬性文件中的management.port值更改爲與server.port相同。同樣的結果。
讓測試工作的唯一方法是從屬性文件中刪除management.port。
任何建議/想法?利用在@SpringBootTest
註釋中定義
@SpringBootTest(properties = {"management.port="})
屬性
由於
因此,爲成功和失敗案例添加一些跟蹤日誌記錄。在成功案例中,我看到以下內容: 'TRACE [Test worker] --- org.springframework.test.web.servlet.TestDispatcherServlet:測試處理程序映射[org.s[email protected]2281521a在DispatcherServlet的名稱爲' 這是缺少失敗的情況下..所以我只能假設,我使用了錯誤的值 'MockMvcBuilders.webAppContextSetup(this.context)' – WHGIBBO