2015-09-24 71 views
4

是否有任何工具或maven插件可以在編譯時或Maven構建執行期間驗證Spring上下文?Spring上下文編譯時驗證

我明白,在沒有應用程序啓動的情況下檢查上下文的完整正確性並不是微不足道的,但是檢查一些微不足道的情況會很好,例如,如果您在xml上下文中定義了一個bean,那麼bean類必須存在於類路徑中。

+1

你應該在Maven的測試階段使用的測試爲。 – Tome

+0

是的,需要在Maven構建階段執行它,問題是 - 究竟要執行什麼。 @luboskrnac示例看起來不錯,我會嘗試一個。 – erkfel

回答

3

每個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()); 
    } 
    ... 
+0

它看起來不錯,謝謝你的建議! – erkfel