如何模拟修改私有变量的私有方法?

Che*_*rry 4 java testing easymock mockito powermock

如何模拟修改私有变量的私有方法?

class SomeClass{
    private int one;
    private int second;

    public SomeClass(){}

    public int calculateSomething(){
        complexInitialization();
        return this.one + this.second;
    }

    private void complexInitialization(){
        one = ...
        second = ...
    }
}
Run Code Online (Sandbox Code Playgroud)

Spa*_*ker 8

你没有,因为你的测试将取决于它正在测试的类的实现细节,因此会很脆弱.您可以重构代码,使您当前正在测试的类依赖于另一个对象来进行此计算.然后你可以模拟被测试类的这种依赖性.或者您将实现细节留给类本身并充分测试它的可观察行为.

您可能遇到的问题是您并没有完全将命令和查询分离到您的类.calculateSomething看起来更像是一个查询,但complexInitialization更像是一个命令.