如何模仿私人吸气者?

lg.*_*rom 7 java jmockit

我有一个我想测试的课程.它看起来类似于:

public class ClassUnderTest
{
    private Dependency1 dep1;

    private Dependency1 getDependency1()
    {
       if (dep1 == null)
          dep1 = new Dependency1();
       return dep1;
     }

    public void methodUnderTest()
    {
       .... do something
       getDependency1().InvokeSomething(..);
    }
}
Run Code Online (Sandbox Code Playgroud)

类Dependency1很复杂,我想在编写单元测试时嘲笑它methodUnderTest().

我怎么做?

Rog*_*rio 2

这非常简单,不需要模拟私有方法或更改被测试的类:

@Test
public void exampleTest(@Mocked final Dependency dep) {
    // Record results for methods called on mocked dependencies, if needed:
    new Expectations() {{ dep.doSomething(); result = 123; }}

    new ClassUnderTest().methodUnderTest();

    // Verify another method was called, if desired:
    new Verifications() {{ dep.doSomethingElse(); }}
}
Run Code Online (Sandbox Code Playgroud)