【问题标题】:How do i write unit test for function with void return type如何为具有 void 返回类型的函数编写单元测试
【发布时间】:2020-05-29 07:34:18
【问题描述】:

我是编写单元测试的新手。我看到了几个 jUnit 的例子,但它们都是用于返回值的函数。

我必须为以下方法编写单元测试。此外,我们在此方法中使用不属于此类的对象和方法,例如 ConfigParser 和 ParseConfig。我该如何为这种方法编写单元测试?

    @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));
}

【问题讨论】:

  • 如果你编写单元测试,你应该考虑你想测试什么。在这种情况下,将写入一个文件。那么也许您想调用该方法并检查单元测试中的文件内容?如果您在测试中使用不想测试的对象,则可以使用 Mockito 之类的模拟框架。

标签: java unit-testing spring-mvc junit mockito


【解决方案1】:

这是您打算测试的方法,对吗?我惊讶地发现它包含测试代码(configParser.parseConfig(TestHelper.getMockedJSONObject(fileLocation));)...

你到底想测试什么?

  • 例如,您可以通过加载该文件来验证该文件的内容。但是,这仅占方法逻辑的一部分。

  • 我没有看到任何 @Override 注释,因此假设您没有覆盖方法。您可以更改方法签名以返回已解析的配置并使用断言进行检查。

  • 可能还有其他方法可以检索配置;这取决于configParser.parseConfig(...)的逻辑。

  • 您还可以考虑将最后的树线提取到另一个方法并测试该方法。

总而言之,您可以更改方法以返回结果,或提取块以拥有方法并测试这些方法,或从其他来源检索结果(以防configParser.getParsedConfig() 存在)。

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2019-10-27
    • 2019-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多