【问题标题】:JUNIT to skip IO handling and verify only the logicJUNIT 跳过 IO 处理并仅验证逻辑
【发布时间】:2015-09-22 21:44:40
【问题描述】:

我在一次采访中被问到类似的问题。

所以基本上,问题是这样的:

你有如下方法:

public void methodToBeTested() {
    //step 1 open file, if not exist create new one
    //step 2 String rst = reverseStr();
    //step 3 write rst to file in step 1
}

那么问题来了,如何写一个单元测试只测试reverseStr逻辑而不每次都做step1和step3的IO处理?

【问题讨论】:

  • 你能分享整个班级并解释到底是什么问题吗?
  • 没有完整的类。面试官拳头要求我实现reverseStr()。然后,她写了一个类似于上面的warper类。它调用reverseStr()。并询问如何在不调用 IO 处理程序的情况下编写单元测试。我认为可能有一些我不知道的 JUNIT 功能。但是,可能只是面试官很傻。
  • 可能在翻译中丢失了一些东西,但这对我来说没有任何意义。如果您只想测试 reverseStr() 的功能,请为它编写一个测试 - 不要寻找神奇的方法来玩弄它的包装器方法。

标签: unit-testing junit


【解决方案1】:

重构您的代码:提取方法reverseStr 并使其成为pure。此方法应包含所有逻辑(将一个字符串转换为另一个字符串)。也使更改可见性至少包私有。那么你可以在你的测试中随意调用这个方法而不用处理文件

【讨论】:

  • 我认为你不能做重构。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多