【问题标题】:Unit testing code that writing to a file without using mock frameworks不使用模拟框架写入文件的单元测试代码
【发布时间】:2016-10-05 21:30:27
【问题描述】:

我想编写一个单元测试一个与文件系统交互的功能(写入文件)。 我已经适应了它正在创建临时文件夹的那一刻的解决方案,使用:@Rule 注释和 TemporaryFolder 类。该文件将在单元测试后被删除。但是这个解决方案有两个缺点:

  • 在 TU 期间与文件系统交互不是一个好习惯(类似于数据库和网络)
  • 如果出现问题并且临时文件夹中的文件没有正确关闭,则永远不会删除此目录。

有没有一种方法可以编写单元测试来测试与文件系统交互的功能,而无需使用像 Mockito 这样的模拟框架?

【问题讨论】:

  • 如果您使用过 Mockito,那么无论哪种方式,您都不会与文件系统进行交互。要么访问它,要么模拟它(通过 Mockito 或自己编写管道代码)。

标签: unit-testing junit


【解决方案1】:

当然,访问文件系统不符合单元测试的理念;但是:写入一些本地文件仍然比网络/数据库通信快得多。

当您在失败后保留这些目录时,您还可以直接访问创建的所有输出;这可能有助于调试目的。

最后:那么您也可以随时触发“擦除”其他层上的临时目录 - 从而最大限度地减少“剩余”的机会。

长话短说:务实

如果您的测试在写入本地文件系统时仍然简单且有用;然后保持这种状态。不要仅仅为了盲目地遵循其他人制定的规则而改变你的工作方法。

另一方面,如果您(和您的团队成员!)真的对当前的解决方案感到不舒服;然后确定您的选项空间并决定是否要更改设置中的某些内容。

【讨论】:

    猜你喜欢
    • 2020-11-22
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    相关资源
    最近更新 更多