Mockito参数匹配器,用于匹配具有泛型的任何类型,不包括null。

huangapple go评论100阅读模式
英文:

Mockito argument matcher that matches any of a type with generics, excluding nulls

问题

  1. 让我们假设我有这样一个类
  2. ```java
  3. public class Wrapper<T> {
  4. T data;
  5. }

然后我有一个方法调用,就像这样:

  1. public interface ThingDoer {
  2. <T> boolean doSomething(Wrapper<T> wrapper);
  3. }

我想在测试中模拟掉它。假设我们已经用好了 Mockito 相关的设置,现在我正在尝试模拟这个方法调用

  1. when(thingDoer.doSomething(any(Wrapper.class))).thenReturn(true);

然而,这会给我一个警告:Unchecked assignment: 'package.Wrapper' to 'package.Wrapper<T>'

我在某个地方看到另一个建议,使用 Java 8 时,应该使用 any() 而不是 any(Wrapper.class)。然而,通过阅读关于这两个方法的文档,any() 将接受 null 参数,而 any(Class) 将拒绝 null 参数,所以它们并不完全相同。有没有一种方法在不产生警告的情况下排除掉 null 值?

  1. <details>
  2. <summary>英文:</summary>
  3. Lets say I&#39;ve got a class like this

public class Wrapper<T> {
T data;
}

  1. And I have a method call like this:

public interface ThingDoer {
<T> boolean doSomething(Wrapper<T> wrapper)
}

  1. which I want to mock out in a test. Lets say we&#39;re all set up with the mockito stuff, and now I&#39;m trying to mock out this method call

when(thingDoer.doSomething(any(Wrapper.class))).thenReturn(true);

  1. However, this will give me a warning: `Unchecked assignment: &#39;package.Wrapper&#39; to &#39;package.Wrapper&lt;T&gt;&#39;`
  2. I read another suggestion somewhere that with Java 8, you&#39;re supposed to use `any()` instead of `any(Wrapper.class)`. However, reading through the documentation on these two methods, `any()` will accept null arguments and `any(Class)` will reject null arguments, so they are not quite synonymous. Is there a way to exclude nulls without getting a warning?
  3. </details>
  4. # 答案1
  5. **得分**: 1
  6. 使用 [`isNotNull()`](https://javadoc.io/static/org.mockito/mockito-core/3.3.3/org/mockito/ArgumentMatchers.html#isNotNull--) 作为匹配器。
  7. ```java
  8. when(thingDoer.doSomething(isNotNull())).thenReturn(true);
英文:

Use isNotNull() as the matcher.

  1. when(thingDoer.doSomething(isNotNull())).thenReturn(true);

huangapple
  • 本文由 发表于 2020年9月4日 03:56:50
  • 转载请务必保留本文链接:https://go.coder-hub.com/63730816.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定