如何使用Mockito模拟

时间:2018-09-07 10:00:36

标签: mockito junit4 powermock powermockito spy

我对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);

那么有人可以建议我吗,我还有其他方法可以通过模仿实现同一件事吗?同样在一些博客上,我发现在类的构造函数内部注入一个公共方法,然后对该方法进行模拟就可以解决问题。但是想知道所有其他可供分析的选项。

谢谢

-山姆

1 个答案:

答案 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();
            }
        }

希望对您有帮助。