2016-06-19 77 views
0

我只是實現JUnit測試的初學者。我有一個測試用例,如下所示。我已經嘗試了when ... thenreturn +驗證方法。使用Mockito/JUnit-Database操作單元測試Java應用程序

@RunWith(MockitoJUnitRunner.class) 
public class CategoryControllerTest { 

    @InjectMocks 
    CategoryController categeoryCntrlr; 
    @Mock 
    private CategoryService catSvc; 
    //private CategoryController catCntrl; 

    @Test 
    public void insertCategoryTest(){ 
     Category cat=new Category(); 
     cat.setStrCatName("Vehicle"); 
     String str = categeoryCntrlr.insertCategory(cat); 
     System.out.println(str); 
     assertEquals("failure",str); 
    } 
} 

我的控制器實際返回字符串'成功',但我上面的測試用例總是說str的值爲空。

當我使用when ... thenreturn()並驗證時,它實際上並未測試我的存儲庫方法,即使我將該返回值更改爲測試用例正在傳遞的其他值。我知道有行爲和測試。我們可以一起解決兩個問題嗎?我可以得到一些初學者教程(我看到了計算器的例子,並找到測試方法,但沒有插入/更新數據庫)?我無法理解Mockito的參考文件,它如何進行實際測試。任何人都可以幫助我嗎?

回答

0

我不是100%確定你的目標是insertCategoryTest(),但你可能想在你的控制器和/或服務中存根方法。

例如,存根insertCategory()方法在您的控制器總是返回"failure",你會做到以下幾點:

when(categeoryCntrlr.insertCategory(any())).thenReturn("failure"); 

大約有驗證相互作用和磕碰方法更多示例調用這裏:http://mockito.org

鏈接的Javadoc:

http://site.mockito.org/mockito/docs/current/org/mockito/Mockito.html

+0

我做測試我的控制器,嘲笑服務和jparepository。我想測試它插入並返回成功。我用'失敗'測試了上面的內容,並且通過了。測試發生在我給的任何東西然後返回它正在測試它,而不是實際的實現。 – Shamseer

+0

什麼是實際方法返回並不重要,重要的是什麼時候..什麼時候返回的方法。 – Shamseer

+0

我可能會有錯誤的理解。但那正是我得到的測試結果。 – Shamseer