使用Mockito / JUnit-Database操作对Java应用程序进行单元测试

时间:2016-06-19 20:57:44

标签: java unit-testing junit mockito

我只是实施JUnit测试的初学者。我有一个测试用例,如下所示。我已经尝试过when ... thenreturn + verify方法。

@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);
    }
}

我的控制器实际返回字符串'success',但我上面的测试用例总是将str的值表示为null。

当我使用... thenreturn()并验证时,它实际上并没有测试我的存储库方法,即使我将返回更改为测试用例传递的其他内容。我知道有行为和测试。有什么解决方案我们可以在一起吗?我可以获得一些初学者教程(我看过计算器示例并找到测试方法,但没有插入/更新数据库)?我无法理解Mockito的参考文件,它是如何实际测试的。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分: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