如何在不使用PowerMock的情况下测试私有方法(用例:对象创建)



我已经将对象创建封装到中指定的新方法中https://code.google.com/p/mockito/wiki/MockingObjectCreation[模式1:使用单行方法创建对象]

在makeFoo方法之前,我使用过private。这让我的工作更加努力。

makeFoo方法难道不需要私有化吗?如果是,人们是如何处理的?

如果您使方法protected,您可以在SUT的测试double中覆盖它。通过这种方式,您可以使方法返回一些mock、spy或其他类型的双重测试。

但是,如果可能的话,我建议您在构造函数中注入依赖类。它为您省去了一些头痛和锅炉板代码。在某些情况下,受保护的工厂方法是一个"更好"的解决方案,只是需要记住。

EDIT:构造函数注入示例:

从这个

public class MyClass
{
    private SomeDependency someDependency;
    public MyClass()
    {
        this.someDependency = new SomeDependency(new A(), new B());
    }
    public void doWork()
    {
        _someDependency.doSomething();
    }
}

到此

public class MyClass
{
    private SomeDependency someDependency;
    public MyClass(SomeDependency someDependency)
    {
        this.someDependency = someDependency;
    }
    public void doWork()
    {
        this.someDependency.doSomething();
    }
}

这允许您直接为类注入测试double,而不是继承它并重写某些工厂方法。

最新更新