我有一个关于mockito功能之一的问题。在几个博客上,我已经读过,模拟构造函数是不可能通过mockito。
对于我的一个测试用例,目前它是通过powermockito完成的,但我想删除它由于一些性能问题。
目前代码看起来像这样:
实际课程:
public class TestClass {
private ClassB classB;
public TestClass(ClassB classB) {
this.classB = classB;
}
}
在我的测试类中,我有这样的代码:
TestClass testClass = Mockito.mock(TestClass.class);
PowerMockito.whenNew(TestClass.class).withArguments(this.classB)
.thenReturn(testClass);
所以任何人都可以建议我,有没有其他方式可以通过mockito实现同样的事情?同样在一些博客上,我发现使用类的构造函数注入一个公共方法,然后模拟该方法可以解决问题。但想知道要分析的所有其他选项。
谢谢
- 山姆
我不确定这是否可以帮到你。
class MyClass {
private final MySecondClass clazz;
MyClass(MySecondClass clazz) {
this.clazz = clazz;
}
public boolean executeDoSomething() {
return clazz.doSomething();
}
}
在测试中你可以模拟内部类:
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
@Test
public void MyClassTest() {
MySecondClass mockedPerformer = Mockito.mock(MySecondClass.class);
MyClass clazz = new MyClass(mockedPerformer);
clazz.executeDoSomething();
}
}
我希望这可以帮助你。