栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

用Java模拟文件-模拟内容-Mockito

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

用Java模拟文件-模拟内容-Mockito

您似乎追求相互矛盾的目标。一方面,您试图避免将数据写入磁盘,这在测试中并不是一个坏目标。另一方面,您正在尝试测试I /
O处理类,这意味着您将使用假定您

File
将使用本机调用的系统实用程序进行工作。因此,这是我的指导:

  • 不要试图嘲笑一个
    File
    。只是不要。太多的本地事物依赖于此。
  • 如果可以的话,请将您的I / O处理代码分成打开a的一半
    File
    和将其转换为a
    Reader
    的一半,以及从中解析HTML的一半
    Reader
  • 那时,您根本不需要模拟-只需构造一个
    StringReader
    即可模拟数据源。
  • 尽管这可以很好地处理单元测试,但您可能还需要编写一个使用临时文件并确保其读取正确的 集成测试 。(感谢Brice添加该提示!)

不要害怕重构您的类以简化测试,如下所示:

class YourClass {  public int method(File file) {    // do everything here, which is why it requires a mock  }   }class YourRefactoredClass {  public int method(File file) {    return methodForTest(file.getName(), file.isFile(),        file.isAbsolute(), new FileReader(file));  }    int methodForTest(      String name, boolean isFile, boolean isAbsolute, Reader fileContents) {    // actually do the calculation here  }   }class YourTest {  @Test public int methodShouldParseBadHtml() {    YourRefactoredClass yrc = new YourRefactoredClass();    assertEquals(42, yrc.methodForTest(        "bad.html", true, false, new StringReader(badHTMLText));  }   }

在这一点上,逻辑输入

method
非常简单,不值得测试,并且逻辑输入
methodForTest
非常容易访问,可以对其进行大量测试。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401886.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号