Java 是否需要为这种情况编写自定义匹配器?

Java 是否需要为这种情况编写自定义匹配器?,java,junit,mocking,mockito,Java,Junit,Mocking,Mockito,我有以下情况。。。每当调用特定的方法时,我想抛出一个异常。我不在乎传递给这个方法的是什么,我只想调用一个异常。问题在于,此方法将自定义类作为参数 我发现实现这一点的唯一方法是使用以下方法: // Matches any Foo TypeSafeMatcher<Foo> fooMatcher = new TypeSafeMatcher<Foo>() { @Override public Boolean matchesSafely(Foo foo) { ret

我有以下情况。。。每当调用特定的方法时,我想抛出一个异常。我不在乎传递给这个方法的是什么,我只想调用一个异常。问题在于,此方法将自定义类作为参数

我发现实现这一点的唯一方法是使用以下方法:

// Matches any Foo
TypeSafeMatcher<Foo> fooMatcher = new TypeSafeMatcher<Foo>() {
  @Override
  public Boolean matchesSafely(Foo foo) {
    return true;
  }

  // more overrides
}

doThrow(new RuntimeException("dummy exception")).when(mockObj).someMethod(fooMatcher);
我想知道是否有一种更简单的方法可以做到这一点,而不必为每个自定义类创建自定义匹配器

谢谢

演员阵容可能足够了:

doThrow(new RuntimeException("dummy exception")).when(mockObj).someMethod((Foo)anyObject());
演员阵容可以满足以下要求:

doThrow(new RuntimeException("dummy exception")).when(mockObj).someMethod((Foo)anyObject());
如果您希望执行与引发异常不同的操作,还可以使用doAnswer()

doAnswer(new Answer() {
      public Object answer(InvocationOnMock invocation) {
          Object[] args = invocation.getArguments();
          Mock mock = invocation.getMock();
          return null;
      }})
  .when(mock).someMethod();
如果您希望执行与引发异常不同的操作,还可以使用doAnswer()

doAnswer(new Answer() {
      public Object answer(InvocationOnMock invocation) {
          Object[] args = invocation.getArguments();
          Mock mock = invocation.getMock();
          return null;
      }})
  .when(mock).someMethod();

你试过isA匹配器吗

doThrow(new RuntimeException("dummy exception")).when(mockObj).someMethod(isA(Foo.class));

你试过isA匹配器吗

doThrow(new RuntimeException("dummy exception")).when(mockObj).someMethod(isA(Foo.class));