有没有针对Java的假文件系统框架?[已关闭]

2022-08-31 11:38:08

我正在一个大量使用IO操作(在本例中为文件系统)的项目中引入测试。系统不断打开/关闭文件,检查文件是否存在,删除文件等。

很快,很明显,常规的嘲笑不会有太大用处,因为这会使我的测试难以设置和推理。另一方面,拥有一个假的文件系统会很棒,而且我认为,设置起来非常容易。

似乎红宝石的家伙们又做了一次,而这正是我在红宝石中所要求的:http://ozmm.org/posts/fakefs.html

Java有什么相似之处吗?


答案 1

Google有一个开源的内存中Java 7的FileSystemProvider实现。该项目称为 jimfs


如果你使用Java 6或更早版本,还有另一种选择:我以前使用过Apache Commons VFS取得了巨大的成功。它似乎很像Java 7中提到的另一个回答者提到的自定义FileSystemProvider。

预加载了几个文件系统实现:File,RAM,S / FTP和Jar等等。我还看到了S3的插件


答案 2

在Java 6和更早版本中,这很困难,因为类喜欢并且不提供调度到Java空间中不同的“虚拟文件系统”的方法。FileFileInputStream

在Java 7中,支持虚拟文件系统;请参见开发自定义文件系统提供程序。我不知道这是否能让你做你想做的事情,但这是一个开始寻找的好地方。


呵呵。事实上,似乎没有任何假的文件系统,我想我只会自己实现一个最小的实现。我通过使用FileSystemProvider没有赢得任何东西

实际上,通过使用FileSystemProvider,您确实会获胜:

  • 你实现了一些东西(如果在开源许可证下发布)可能对你这个位置上的其他人非常有用,并且用于其他目的。

  • 如果您决定切换到其他人可能正在处理的文件系统提供程序,则可以使自己更容易。


推荐