【问题标题】:JUnit test fails because of user home directory syntax由于用户主目录语法,JUnit 测试失败
【发布时间】:2016-01-07 16:43:54
【问题描述】:

我正在使用 Junit 进行单元测试,我想测试我创建的文件是在请求的位置创建的,在这种情况下,该位置是 tmp 文件夹。我的测试失败了,因为从 'tmpFile.getParent()' 获得的用户主目录与从 System.getProperty("user.home") 获得的用户主目录不同:

tmpFile= File.createTempFile("tmpFile", ".tmp");
String actualFolder = tmpFile.getParent();/* the tmp file directory */  

String expectedFolder= System.getProperty("user.home")+"\\AppData\\Local\\Temp"

Junit 测试失败,在控制台中,我得到:

actualFolder = C:\Users\[USER_~1\]AppData\Local\Temp
expectedFolder = C:\Users\[user_000]AppData\Local\Temp>

如何获得与 'tmpFile.getParent()' 相同的用户目录语法? 提前感谢您的帮助!

【问题讨论】:

  • 试试new File(actualFolder).getAbsolutePath()
  • 一些注意事项:单元测试最好不要测试文件系统。但有时,你“需要”,所以这里也许是有道理的。如果是这样,您可能应该使其与文件系统无关。现在,除非您在 Windows 上,否则您的测试将失败,因为反斜杠路径。另外,我认为默认临时文件夹是特定于平台的,因此依赖它位于 "user.home" 下可能会导致额外的误报(即测试失败)。

标签: java windows junit


【解决方案1】:

您尝试比较的字符串只是文件系统中底层文件的表示。正如 yole 建议的那样,您应该分别比较文件句柄的绝对路径或规范路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 2021-09-18
    • 1970-01-01
    相关资源
    最近更新 更多