Pul*_*lix 8 java deprecated mockito
我正在研究 Java 8 到 Java 17 的更新,该项目包括一个非常旧的 Mockito 版本。当我将库更新到 Mockito 4.4.0 时,我发现有很多库已被完全删除,其中大多数与对象验证相关,您可以在编译时设置变量类型,例如:如果您有以下对象:
Map<String,Object> map
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用 Mokito 验证映射是否为 String、Object 类型:
anyMapOf(String.class,Object.class)
Run Code Online (Sandbox Code Playgroud)
这里的事情是,我认为这两者之一可能是一个很好的方法:
//Create the map first
Map<String,Object> map = new HashMap<>();
//Then use the method "any" calling the getClass method
any(map.getClass())
Run Code Online (Sandbox Code Playgroud)
但现在我很确定它不一样。另一方面,我找到了以下论坛: java generics: getting class of a class with genericparameters
我从中得到这段代码:
(Class<Map<String,Object>>)(Class)Map.class
Run Code Online (Sandbox Code Playgroud)
如果你将它与任何一起使用,这似乎也有效,如下所示:
any((Class<Map<String,Object>>)(Class)Map.class)
Run Code Online (Sandbox Code Playgroud)
但显然,它会触发警告消息,而且它似乎不是最好的解决方案。
最后,我在Mockito 文档中读到,这个类仅用于通用友好性,以避免在 Java 8 之前进行转换,所以这意味着如果我使用anyMap,它将与 anyMapOf 一样工作?
我花了几个小时寻找可能是这种已弃用方法的最佳替代品,但我就是找不到正确的答案。
尝试这个:
ArgumentMatchers.<String,Object>anyMap()
Run Code Online (Sandbox Code Playgroud)
或这个:
Map<String,Object> mapToGoIntoTheMock = anyMap()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6354 次 |
| 最近记录: |