我的测试太慢了,因为我在代码中使用了一个配置库,每次我设置或获取某些东西时至少要花费100毫秒。

我正在使用Java,而我使用的配置库则使用Apache ZooKeeper来存储数据。
我多次使用Mockito和Powermock,但从未尝试模拟外部库,我想知道是否有可能。

import org.HybridConfiguration;

public class VisitManagerClass {

    private static final String COUNT_ENABLED = "countEnabled";
    private static final String COUNT = "count";

    public static void pageVisited() {
        boolean isCountEnabled = HybridConfiguration.getBooleanValue(COUNT_ENABLED);
        if (isCountEnabled) {
            long currentCount = HybridConfiguration.getLongValue(COUNT);
            HybridConfiguration.setValue(COUNT, Long.toString(currentCount + 1));
        }
    }
}


我希望能够模拟库HybridConfiguration,以便测试可以没有任何延迟地运行。

最佳答案

解决方法是创建一个服务门面,将对config-library / Apache-ZooKeeper的所有api调用隐藏在接口后面。您的应用仅与该接口通信,并且对config-library / Apache-ZooKeeper的所有方法调用均在您的服务实现中完成。

为了进行测试,您可以轻松地模拟该服务。

有关更多详细信息,请参见the-onion-architecture

07-28 11:48