JUnit Jupiter 5测试中参数匹配器使用无效问题咨询
JUnit Jupiter 5测试中参数匹配器使用无效问题咨询
大家好,我在编写JUnit Jupiter 5的测试用例时,碰到了参数匹配器相关的问题,折腾了半天没搞明白,想请各位大佬帮忙分析下。
我要测试的场景是:当调用planKeyServiceImpl.updateKey(null)时,内部会正确调用hqRestClient.updateKey方法,且第一个参数为null,第二个参数是我预设的planKeyWithNullId对象。但实际运行测试时,总感觉参数匹配的逻辑有问题,不确定是不是我的写法出错了。
下面是我的测试代码:
@Test void updateKey_ShouldCallHqRestClient_WhenKeyIdIsNull() { // Arrange PlanKey planKeyWithNullId = createPlanKeyWithNullId(); // Act doNothing().when(hqRestClient).updateKey(isNull(), planKeyWithNullId); planKeyServiceImpl.updateKey(null); // Assert verify(hqRestClient, times(1)).updateKey(isNull(), eq(planKeyWithNullId)); } private PlanKey createPlanKeyWithNullId() { // 此处省略创建id为null的PlanKey对象的具体逻辑 }
我现在有几个疑问:
- 是不是在stubbing(也就是
doNothing()那行)里,第二个参数直接传具体对象planKeyWithNullId会导致匹配问题?是不是应该换成eq(planKeyWithNullId)? - 混合使用
isNull()匹配器和具体对象实例,会不会触发Mockito的参数匹配规则冲突? - 我的断言部分写法是否正确,能不能准确验证到方法被调用了一次,且参数符合预期?
麻烦各位帮忙看看这个测试用例的问题所在,谢谢啦!
内容来源于stack exchange
相关产品推荐
相关产品推荐

