我一直在尝试设计一个文件路径,如果可能的话,使用以下代码在Linux / MacOS / Windows上创建Java无法创建的文件名:
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的as-is File类无法创建目录/文件。
答案 0 :(得分:0)
许多原因导致文件名在Linux中非法(在iOS中可能类似),完全在Windows中不同。你想检查什么?如果您尝试处理Java函数的非法名称,它们将失败。如果这是你想要捕获的东西,那么为每个人制作一个非法的名称(条件并非如此简单)。如果你想检查你的代码是否捕获了这个,我只是将问题推迟到较低级别:尝试创建;如果它失败了,抱怨。
如果您想知道每个系统的名称是非法的,请更好地专门询问。