我对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);
那么有人可以建议我吗,我还有其他方法可以通过模仿实现同一件事吗?同样在一些博客上,我发现在类的构造函数内部注入一个公共方法,然后对该方法进行模拟就可以解决问题。但是想知道所有其他可供分析的选项。
谢谢
-山姆
答案 0 :(得分:2)
我不确定这是否可以帮助您。
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();
}
}
希望对您有帮助。