私はNickHoltの答えに基本的に同意しますが、 mockitoは次の呼び出しであなたが求めることを実行できることを指摘する必要があると思いました。
Foo mock = Mockito.mock(Foo.class, withSettings().extraInterfaces(Bar.class));
明らかに、キャストを使用(Bar)mock
する必要があります。モックをとして使用する必要があるBar
が、そのキャストはスローされない場合ClassCastException
これは、まったくばかげているとはいえ、もう少し完全な例です。
import static org.junit.Assert.fail;
import org.junit.Test;
import static org.mockito.Mockito.*;
import org.mockito.Mockito;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import org.hamcrest.Matchers;
import java.util.Iterator;
public class NonsensicalTest {
@Test
public void testRunnableIterator() {
// This test passes.
final Runnable runnable =
mock(Runnable.class, withSettings().extraInterfaces(Iterator.class));
final Iterator iterator = (Iterator) runnable;
when(iterator.next()).thenReturn("a", 2);
doThrow(new IllegalStateException()).when(runnable).run();
assertThat(iterator.next(), is(Matchers.<Object>equalTo("a")));
try {
runnable.run();
fail();
}
catch (IllegalStateException e) {
}
}