java - Mockito 参数匹配器,匹配任何具有泛型的类型,不包括空值
问题描述
假设我有这样的课程
public class Wrapper<T> {
T data;
}
我有一个这样的方法调用:
public interface ThingDoer {
<T> boolean doSomething(Wrapper<T> wrapper)
}
我想在测试中模拟出来。假设我们都设置好了 mockito 的东西,现在我正在尝试模拟这个方法调用
when(thingDoer.doSomething(any(Wrapper.class))).thenReturn(true);
但是,这会给我一个警告:Unchecked assignment: 'package.Wrapper' to 'package.Wrapper<T>'
我在某处阅读了另一个建议,即使用 Java 8,您应该使用any()
而不是any(Wrapper.class)
. 但是,通读这两种方法的文档,any()
将接受空参数并any(Class)
拒绝空参数,因此它们并不完全是同义词。有没有办法在不收到警告的情况下排除空值?
解决方案
用作isNotNull()
匹配器。
when(thingDoer.doSomething(isNotNull())).thenReturn(true);
推荐阅读
- azure - Botfront 网络聊天小部件未在 Azure 环境中显示
- vue.js - 我可以在 Vuejs 的同一个下拉列表中使用 2 个 v-fors,因为我需要在它们之间放置标签吗?
- c# - 在没有 WPF 的情况下使用 DispatcherTimer
- windows - 写入网络映射驱动器 - 空文件或失败
- r - 如何使用 dplyr::c_across() 总结不同类型的变量
- data-structures - 最适合存储二分键的数据库结构?
- java - 如何在 netbeans 12 中添加 java 库
- java - Spring Batch 将数字 2,981.00 扭曲为 2-981.00
- javascript - 如何更新剃刀页面中的画布
- swift - iOS 14 / XCode 12 - 以前的资产不再工作?