2 回答

TA贡献1872条经验 获得超4个赞
Mockito 在构造函数注入两个或多个相同类型的字段时存在一些问题。但是,如果您使用 setter 注入,它会完美运行。
所以你可以像这样重构“Sender”类:
public class Sender {
private SomeClass firstField;
private SomeClass secondField;
public void setFirstField(SomeClass firstField) {
this.firstField = firstField;
}
public void setSecondField(SomeClass secondField) {
this.secondField= secondField;
}
}
请记住,如果类同时具有构造函数和设置器,Mockito 将选择构造器进行注入并完全忽略设置器。
编辑:如果你出于某种原因肯定需要使用构造函数,你总是可以手动模拟字段而不是使用 Mockito 注释。因此,在您的情况下,Sender 将保持不变,而 SenderTest 将是这样的:
public class SenderTest {
private SomeClass firstField;
private SomeClass secondField;
private Sender sender;
@Before
public void setUp() {
firstField = Mockito.mock(SomeClass.class);
secondField = Mockito.mock(SomeClass.class);
sender = new Sender(firstField, secondField);
}
@Test
public void smokeTest() {
}
}

TA贡献1794条经验 获得超8个赞
这取决于它SomeClass
本身是什么。它是一个数据(POJO)对象,值得在测试中创建它们(即填充随机生成的值)。
如果是服务。它可能是架构问题的标志。为什么你需要相同服务的两个副本?可能进行一些重构是有意义的。
添加回答
举报