Модульный тестовый пример: издевательство или вызов реального метода для конкретного сценария - PullRequest
0 голосов
/ 17 октября 2019

У меня есть метод, который проверяет наличие свободного места. Если он пересекает пороговое значение, он регистрирует, генерирует дампы потока и затем завершает работу.

Я не уверен, как написать тестовый пример для этого.

Ниже приведен метод, который выполняет задачу, как описано выше:

void watchDog() {
    FileStore fileStore = null;
    long total = 0;
    long free = 0;
    double percent_free = 0;
    try {
        fileStore = Files.getFileStore(Paths.get(dirToWatch));
        total = fileStore.getTotalSpace();
        free = fileStore.getUsableSpace();

        percent_free = 100.0 * ((double) (total - free) / (double) total);
    } catch (IOException e) {
        e.printStackTrace();
    }

    if (percent_free >= thresholdValue) {
        StringBuilder str = new StringBuilder();
        ThreadMXBean threadMxBean = ManagementFactory.getThreadMXBean();
        for (ThreadInfo ti : threadMxBean.dumpAllThreads(true, true)) {
            str.append(ti);
        }
        LOGGER.error(str.toString());
        System.exit(0); // Exit after dumping and logging Thread dumps
    }
}

Яне в состоянии думать, как провести модульное тестирование этого куска кода? Какая стратегия нужна для модульного тестирования этого метода? Нужно ли мне выполнять этот код на самом деле в модульном тесте или Mocking поможет?

Важным моментом является то, что этот метод выполняет System.exit (), поэтому будет ли он завершать сам Junit?

Любые рекомендации будут очень полезны.

...