我可以在单元测试时模拟特定的文件系统吗?

时间:2013-07-04 07:49:34

标签: java java-ee junit junit4 java-6

我一直在谷歌上搜索,但找不到符合我特定情况的答案。

我正在研究一个项目文件管理器类,并发现它的开发在Windows和Unix文件系统上表现不同。

更具体地说,它正在补偿Unix中的案例敏感性:当找不到文件时,管理器将以不区分大小写的方式查找它。

在更改此代码之前,我想实现一些单元测试。但是,我们的开发机器和我们的CIP都在Windows上,而且我没有可用的Unix机器。机器和IDE由客户提供。虚拟化不是一种选择,双启动甚至更少。

有没有办法测试Windows和Unix模式,同时与构建平台无关?我认为理想的做法是在一个模式下运行整个Test Class,然后在另一个模式下运行,但即使是更实际的解决方案也会很棒。

在生产模式下,使用Spring初始化文件管理器,但它们是链的最低级别,直接使用java.io。

版本:Java 6,JUnit 4.9

2 个答案:

答案 0 :(得分:1)

你可以通过wubi安装它来轻松双启Ubuntu。

我已经了解到单元测试不应该出于不同的原因访问文件系统(速度就是其中之一)。

对于Java 6来看看theese: http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaFileManager.html http://docs.oracle.com/javase/6/docs/api/javax/swing/filechooser/FileSystemView.html

如果您使用Java 7,这可能对您有所帮助: http://download.oracle.com/javase/7/docs/technotes/guides/io/fsp/filesystemprovider.html

答案 1 :(得分:0)

你可以使用VM在unix上测试它。 Oracle的Virtual Box是一款优秀的虚拟化软件。安装Ubuntu,或Fedora,或其他一些基于Unix的OS'磁盘映像。将文件传输到VM。您可以直接从源代码管理中检出VM,你应该好好去。至少我认为这就是你想做的事:在windows和linux中测试你的软件,但目前没有你可以使用的linux