2016-06-19 76 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