【问题标题】:Java: Mock external library for testingJava:用于测试的模拟外部库
【发布时间】:2019-07-04 05:30:06
【问题描述】:

我的测试太慢了,因为我在代码中使用了一个配置库,每次设置或获取某些东西时至少需要 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 库,以便可以毫无延迟地运行测试。

【问题讨论】:

  • 一个类是属于你的还是来自外部库并不会改变你使用 mockito 或 powermockito 模拟它的方式。你为什么不试着做,就像你以前做的一样?

标签: java mocking mockito apache-zookeeper powermock


【解决方案1】:

要走的路是创建一个服务外观,将所有对 config-library/Apache-ZooKeeper 的 api 调用隐藏在接口后面。您的应用程序仅与接口通信,并且对 config-library/Apache-ZooKeeper 的所有方法调用都在您的服务实现中完成。

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

更多详情见the-onion-architecture

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-03
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2023-02-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    相关资源
    最近更新 更多