本文介绍使用 junit 5 的 `@tempdir` 注解创建隔离、自动清理的临时测试目录,实现对 `loadfile()` 方法的幂等单元测试,确保每次运行结果一致,并可靠验证 `files.move()` 和 `files.delete()` 的调用效果。
在测试涉及真实文件系统操作(如删除或重命名)的方法时,一个常见痛点是测试不幂等:首次执行可能成功删除文件,第二次再运行则因文件不存在而失败;若异常路径触发重命名,后续测试又会因文件名变更而断言失败。这不仅破坏测试的可重复性,也违背单元测试“快速、独立、可靠”的基本原则。
解决该问题的核心思路是:为每次测试提供全新、隔离、生命周期受控的文件环境。JUnit 5.4+ 提供的 @TempDir 参数化注解正是为此而生——它会在测试方法执行前自动创建一个唯一的临时目录,并在测试结束后(无论成功或失败)递归清理其中所有内容,包括子目录和文件。这意味着每个测试用例都拥有专属“沙箱”,彼此零干扰。
以下为推荐的测试实现: