4
是否有任何工具或maven插件可以在編譯時或Maven構建執行期間驗證Spring上下文?Spring上下文編譯時驗證
我明白,在沒有應用程序啓動的情況下檢查上下文的完整正確性並不是微不足道的,但是檢查一些微不足道的情況會很好,例如,如果您在xml上下文中定義了一個bean,那麼bean類必須存在於類路徑中。
是否有任何工具或maven插件可以在編譯時或Maven構建執行期間驗證Spring上下文?Spring上下文編譯時驗證
我明白,在沒有應用程序啓動的情況下檢查上下文的完整正確性並不是微不足道的,但是檢查一些微不足道的情況會很好,例如,如果您在xml上下文中定義了一個bean,那麼bean類必須存在於類路徑中。
每個Spring Guide包含這樣的理智測試。
對於Spring MVC應該使用MockMvc測試進行測試。要驗證Spring配置是否正常,您可以根據URL創建完整上下文和激發請求,並覆蓋驗證+所有Spring連線。這種測試在測試Maven階段執行。
事情是這樣的:
@WebAppConfiguration
@ContextConfiguration(classes = RestApplication.class)
public class RestApplicationContextTest extends
AbstractTestNGSpringContextTests {
private static final String FULL_USER_URL = "http://localhost:10403/users";
private MockMvc mockMvc;
@Autowired
private WebApplicationContext webApplicationContext;
@BeforeMethod
public void init() {
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
private static String createTestRecord(int identifier) {
String testingRecordString =
"{\"email\": \"user%[email protected]\", \"name\": \"User%d\"}";
return String.format(testingRecordString, identifier, identifier,
identifier);
}
@Test
public void testPost() throws Exception {
// GIVEN
String testingRecord = createTestRecord(0);
// WHEN
// @formatter:off
MvcResult mvcResult = mockMvc.perform(post(FULL_USER_URL)
.contentType(MediaType.APPLICATION_JSON)
.content(testingRecord))
.andReturn();
// @formatter:on
// THEN
int httpStatus = mvcResult.getResponse().getStatus();
assertEquals(httpStatus, HttpStatus.CREATED.value());
}
...
它看起來不錯,謝謝你的建議! – erkfel
你應該在Maven的測試階段使用的測試爲。 – Tome
是的,需要在Maven構建階段執行它,問題是 - 究竟要執行什麼。 @luboskrnac示例看起來不錯,我會嘗試一個。 – erkfel