当前位置: 首页 > 知识库问答 >
问题:

嘲讽部分帕尔马人

宇文俊风
2023-03-14

我正在尝试在Java写单元测试。下面是我的代码片段

类Temp{public void method(){

       return someObject.someMethod(param1, param2, param3, param4, param5);
   }
}

测试方法:

@Test
public void testMethod() {

     Mokito.when(someObjectMock.someMethod(Mockito.anyString(), Mockito.anyString(), Mockito.anyInt(), Mockito.anyBoolean(),
                    false)). thenReturn(true);

     boolean status = temp.method();

     Assert.assertEquals(true, status);
}

然而,在执行测试用例时,我得到以下错误:

 Invalid Use of argument matchers !
 5 matchers expected, 4 recorded

如果我的理解是正确的,它期望传递的所有参数都被嘲弄。但这不是我想要的,我希望模拟前4个参数,并根据5个参数(true或false),然后指定方法的适当返回值。

有办法绕过这件事吗?

谢谢

共有1个答案

西门凯康
2023-03-14

您需要对最后一个参数使用matchers.eq(false)(或者mockito.eq(false),在这两个地方都公开了相同的静态方法),而不是使用简单的false

也就是说,考虑将您的短截短(when()调用)中的所有匹配器保留为any(),而不是期望一个值。这里有两种情况:或者您的测试实际上关心传递给模拟的值是什么,在这种情况下,您需要verify()调用(因为错过的模拟预期在Mockito中不是错误),或者您的测试不关心,在这种情况下,期望特定的值只会使测试变得脆弱。不管是哪种方式,除非您需要根据不同的参数值从存根返回不同的值,否则在截尾时期望特定的参数是没有任何价值的。

 类似资料:
  • 我遇到了和这个人一样的问题: X-Drupal缓存Drupal 7网站总是打MISS,找不到出路。 我正在运行Drupal7-Pressflow 和 清漆4.0 当我卷曲时,我得到这个结果: 这是上光油。com告诉我:“你应该得到一个金星,给你:金星徽章”。。。。 虽然链接Drupal组织线程中建议的“Varnish Indicator Chrome Extension”告诉我Varnish mi

  • 1. 马尔科夫链概述 马尔科夫链定义本身比较简单,它假设某一时刻状态转移的概率只依赖于它的前一个状态。举个形象的比喻,假如每天的天气是一个状态的话,那个今天是不是晴天只依赖于昨天的天气,而和前天的天气没有任何关系。当然这么说可能有些武断,但是这样做可以大大简化模型的复杂度,因此马尔科夫链在很多时间序列模型中得到广泛的应用,比如循环神经网络RNN,隐式马尔科夫模型HMM等,当然MCMC也需要它。 如

  • 我提到了这个答案,我该如何模拟java。时间本地日期。now()关于如何模拟我的LocalDateTime。now()调用。我基本上遵循了所有步骤,但只使用了LocalDateTime而不是LocalDate。 我的代码的功能是这样的,它应该只在一小时的第15或45分钟运行。因此,我将LOCAL\u DATE\u TIME静态变量设置为: 然后在我的@Before测试方法中,我有以下内容: 这是2

  • 我正在尝试通过angle 4上传一个带有pdf文件的表单 该请求是一个多部分/表单数据请求 我正在使用springboot、apachecamelservlet,我的路径是 在我的处理器中 然后我正在尝试写入如下文件: 无论我怎么尝试,文件总是被破坏。无法在Acrobat reader中打开。

  • 问题内容: 我正在使用JAXB marshaller创建和格式化我的.xml文件。除了一个地方,它运作良好。缩进缺少两个地方: .xml文件的其余部分看起来不错。我正在使用这种方法来美化整个代码: 不幸的是,它不适用于这两个元素。有任何想法吗? 问题答案: 可以通过将javax Transformer应用于输出来解决此烦人的问题。