如何测试类成员调用另一个方法的内部逻辑方法

时间:2016-12-20 06:05:32

标签: unit-testing mockito powermock

我想测试agentAgentInfo方法以及测试wsProxy.findAgentInfo方法。如何使用PowerMockito / Mockito进行测试?

    private WSProxy wsProxy = new WSProxy();
    public String getAgentInfo(String loginId) {
        String agentInfo = null;
        try {
           agentInfo = wsProxy.findAgentInfo(loginId);
        } catch (RemoteException e) {
           e.printStackTrace();
        }
        return agentInfo;
    }

1 个答案:

答案 0 :(得分:1)

您的问题是您创建了难以测试的代码。

这里有两个选项:

  1. 您使用PowerMock / PowerMockito是为了允许您在此调用时注入模拟的WSProxy对象:wsProxy = new WSProxy();该模拟对象应该期望调用findAgentInfo()
  2. 您将设计更改为使用依赖注入。换句话说:代替您的类直接调用 new ,您可以使用其他方法来获取此类WSProxy对象(例如,通过构造函数接收一个)。
  3. 我通常建议选项2;通过学习如何创建可测试的代码(例如通过观察这些videos)来实现目标。是的,PowerMock可以解决这些问题;但问题是PowerMock根本就不是免费的 - 我花了几个小时来调试PowerMock的“问题”;总是认为破损与我们的生产代码无关。所以,尽可能诱人;不使用PowerMock可以节省我很多的时间;我可以用它来提出更好的设计。