我正在为我的Java程序编写单元测试。我的程序执行了很多操作,包括从用户输入的文件中读取数据,并根据输入文件的内容创建新文件。
目前,我的单元测试使用的是用于测试的预制文件,我已将其放在资源源目录中。创建文件时,会将其放在同一资源源目录中。
我在这里看了很多问题和答案,关于如何在单元测试中处理文件有很多不同的意见。在我的单元测试中使用这些预制文件是否合适,还是有更好的解决方案?
答案 0 :(得分:1)
是的,标准做法是将您的静态输入文件放在src/test/resources
目录中进行测试。如果主代码生成输出,那么在测试期间放置它的最干净的位置是在特定于平台的tmp目录中。在Java中,它位于System属性java.io.tmpdir
:
System.out.println(System.getProperty("java.io.tmpdir"));
如果您使用此目录,它将在MacOS,Linux或Windows下运行它的开发人员以及任何构建服务器之间移植。
测试完成后,测试删除这些临时文件也是一个好主意,并且测试不会对先前测试运行中可能存在的临时文件做出任何假设。
答案 1 :(得分:0)
是否静电" premade"文件是否合适在很大程度上取决于您尝试测试的逻辑以及您希望如何管理测试数据。也许您需要包含相对于今天日期的日期的测试数据。在这种情况下,使用静态文件可能比编写代码来计算相对日期更麻烦。
正如JB Nizet在他的评论中指出的那样,将测试数据与源代码一起存储通常不是一个好主意。我不确定您是否熟悉maven及其standard directory layout,但您可能会看一下它,看看它如何帮助保持测试和源文件分离。