【发布时间】:2013-04-12 16:04:15
【问题描述】:
我最近问了几个面向 jUnit 和 Mockito 的问题,但我仍然很难掌握它的窍门。这些教程都是针对非常简单的示例,所以我正在努力扩大我的测试用例以适用于我的课程。
我目前正在尝试为我在 web 应用程序中的一个代理中使用的方法编写一些测试用例。该方法与代理内部的其他几个方法交互以验证某些对象。我现在只想测试这个方法。
这是我尝试做的:
-
像这样创建我的代理的 Mockito 对象:
MyProcessingAgent mockMyAgent = Mockito.mock(MyProcessingAgent.class); -
使用 Mockito.when 设置存根(希望是正确的术语),如下所示:
Mockito.when(mockMyAgent.otherMethod(Mockito.any(arg1)).thenReturn(requiredReturnArg); -
尝试像这样执行我的方法:
List myReturnValue = mockMyAgent.methodThatNeedsTestCase();
我期待 myReturnValue 中的内容,但收到了 0,所以我尝试调试。当我调用该方法时,它永远不会执行。我在方法的第一行有一个永远不会被触及的调试点。
如果我想在类的一个方法中执行代码,但强制类中的其他方法(尝试与外部世界中的数据库交互的方法)返回伪造的值。 Mockito 可以做到这一点吗?
看来我目前的方法不是正确的测试方式,但我不确定如何前进。我可以模拟我的类并让一种方法像正常一样执行,而其他方法被存根以返回我的给定值,这样我就不必在测试这一种方法期间处理数据访问?
【问题讨论】:
标签: java junit mocking mockito