Java: макет внешней библиотеки для тестирования - PullRequest
1 голос
/ 04 июля 2019

Мои тесты слишком медленные, потому что я использую библиотеку конфигураций в своем коде, которая занимает не менее 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, чтобы тесты могли выполняться без каких-либо задержек.

1 Ответ

1 голос
/ 04 июля 2019

Для этого нужно создать служебный фасад, который скрывает все API-вызовы config-library / Apache-ZooKeeper за интерфейсом.Ваше приложение взаимодействует только с интерфейсом, и все вызовы методов для config-library / Apache-ZooKeeper выполняются в вашей сервис-реализации.

Для тестирования вы можете легко смоделировать эту услугу.

Подробнее см. the-onion-архитектура

...