java接口可以创建对象_java-是否可以创建一个使用EasyMock实现多个接口的模拟对象?...

尽管我从根本上同意尼克·霍尔特的回答,但我认为我应该指出,模仿可以通过以下调用来完成您所要求的操作:

Foo mock = Mockito.mock(Foo.class, withSettings().extraInterfaces(Bar.class));

显然,当您需要使用模拟作为Bar时,您将不得不使用强制转换:(Bar)mock,但是该强制转换不会抛出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.equalTo("a")));

try {

runnable.run();

fail();

}

catch (IllegalStateException e) {

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值