2016-04-15 58 views
1

我對jUnit測試頗爲陌生,我正在嘗試爲我的Spring Boot應用程序編寫一些integration test。我的計劃是測試是否設置了對象的所有強制屬性。我想出了這樣的:jUnit:如何測試實體的強制屬性

@Test(expected = org.springframework.orm.jpa.JpaSystemException.class) 
public void testMessageMandatoryAttributes() { 
    Message corruptedMessage = new Message(); 
    // set id 
    // corruptedMessage.setId(id); 
    // set conversation thread 
    // corruptedMessage.setConversationThread(conversationThread); 
    messageRepository.save(corruptedMessage); 
} 

不過我留言實體更具強制性的屬性...如何測試的只是他們都是正確設置一個功能?

+0

我不明白。似乎你自己設置了所有的屬性(通過測試中的setter),所以你想測試什麼? – pgiecek

+0

你介意發佈你想爲其編寫測試的java代碼嗎?這將更容易看到你需要什麼JUnit測試然後 – deeveeABC

+0

@pgiecek我的目標是創建一個測試,說「你試圖創建一個對象並將其保存到數據庫,但是你沒有分配所有必需的屬性,所以你得到這個和這個和這個領域的這個例外,那就是,它應該如何......「 – Dworza

回答

1

基本上你需要測試messageRepository.save(Message)方法拋出一個異常,其中包含一些關於缺少字段的信息。

查找下面的代碼片段,可以幫助您實現您的目標。將catch-block中的斷言替換爲您需要驗證的任何內容。

@Test 
public void testMessageMandatoryAttributes() { 
    Message corruptedMessage = new Message(); 
    // set id 
    // corruptedMessage.setId(id); 
    // set conversation thread 
    // corruptedMessage.setConversationThread(conversationThread); 

    try { 
     messageRepository.save(corruptedMessage); 
     fail(); 
    catch (YourException e) { 
     assertEquals("Expected value", e.getXxx()); 
     // ... 
    } 
} 
+0

謝謝!用這種方法我可以解決它:) – Dworza

0

如果你想斷言異常,那麼我會建議使用ExpectedException。如果你想驗證對象屬性,那麼我會建議使用寫你自定義匹配器。