Как написать модульный тест для функции с возвращаемым типом void - PullRequest
1 голос
/ 29 мая 2020

Я новичок в написании модульных тестов. Я видел несколько примеров jUnit, но все они были для функций, возвращающих значение.

Мне нужно написать модульный тест для следующего метода. Также мы используем в этом методе объекты и методы, не принадлежащие этому классу, такие как ConfigParser и ParseConfig. Как мне go писать модульные тесты для таких методов?

    @RequestMapping(value = "/generate-json" , consumes = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
@PageType(pageType = "PlaceHolderPageType")
public void execute(@RequestBody String payload) throws JSONException {
    JSONObject json = new JSONObject(payload);
    JSONObject configJSON = generateJSONSchema(json.toString());
    String capabilityName = (String) configJSON.get(JSONConfigurationConstants.CAPABILITY_NAME);
    String fileLocation = FormInputFieldConstants.JSON_PATH + capabilityName + JSONConfigurationConstants.FILE_EXTENSION;
    //Write JSON file
    try (OutputStreamWriter file  = new OutputStreamWriter(new FileOutputStream(fileLocation), StandardCharsets.UTF_8)) {
        file.write(configJSON.toString());
        file.flush();
        file.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    URI uriSchemaLocation = new File(fileLocation).toURI();
    ConfigParser configParser = new ConfigParser(uriSchemaLocation);
    configParser.parseConfig(TestHelper.getMockedJSONObject(fileLocation));
}

1 Ответ

1 голос
/ 29 мая 2020

Это метод, который вы собираетесь протестировать, верно? Я удивлен, увидев, что он содержит тестовый код (configParser.parseConfig(TestHelper.getMockedJSONObject(fileLocation));) ...

Что именно вы хотите проверить?

  • Например, вы можете проверить содержимое файла, которое записывается при загрузке этого файла. Однако это составляет только часть метода logi c.

  • Я не вижу аннотации @Override и поэтому предполагаю, что вы не переопределяете метод. Вы можете изменить подпись метода, чтобы вернуть проанализированную конфигурацию и проверить ее с помощью утверждений.

  • Могут быть другие способы получить конфигурацию; это зависит от logi c из configParser.parseConfig(...).

  • Вы также можете рассмотреть возможность извлечения последних строк дерева другим методом и протестировать этот метод.

Подводя итог, вы можете либо изменить метод для возврата результата, либо извлечь фрагменты для собственных методов и проверить их, либо получить результат из другого источника (в случае, если существует что-то вроде configParser.getParsedConfig()).

...