0

我一直在尝试设计一个文件路径,如果可能的话,Java 无法使用以下代码在 Linux/MacOS/Windows 上创建一个文件名:

File directory = new Directory(dir);
directory.mkdirs(); // should always fail and not affect an existing file/dir

File file = new File(dir, filename);
file.createNewFile(); // should always fail and not affect an existing file/dir

这种路径将用于单元测试,以证明某些错误条件得到正确处理假设测试正在运行root(它们不是,但我想专注于无效路径副权限)。到目前为止,我尝试过的一切都将在一个平台(通常是 Windows)上失败,但不会在另一个平台(通常是 Linux)上失败。

建议?

PS。我知道模拟对象、PowerMock 等,但真的只是想让 Java 的原样 File 类无法创建目录/文件。

4

1 回答 1

0

文件名在 Linux 中非法的原因有很多(在 iOS 中可能类似),而在 Windows 中则完全不同。你想检查什么?如果您尝试处理 Java 函数的非法名称,它们将失败。如果这是您想要捕获的内容,请为每个人编造一个非法的名称(条件不是那么简单)。如果您想检查您的代码是否捕获到这一点,我只是将问题推迟到较低级别:尝试创建;如果失败,请抱怨。

如果您想知道每个系统的哪些名称是非法的,最好专门询问一下。

于 2013-01-29T23:25:39.017 回答