我的一个单元测试是由测试数据驱动的,存储在 src/test/resources/testData.txt
中。由于Maven会复制src/test/resources
的内容至target/test-classes/
它位于类路径上,我可以方便地从类路径中读取该文件,而无需关心其绝对文件名。到目前为止,一切顺利。
现在我正在编写一些代码,这些代码将使用从远程系统获取的数据来更新该文件。该代码将很少运行,并且不会作为构建的一部分。更新后的文件将提交到源存储库。为了附加到文件,我需要知道 src/test/resources
中原始文件的路径。 (附加到 target/test-classes/
中的那个显然不起作用)。
如何以可移植的方式确定该路径?我不想硬编码 src/test/resources/
,因为这些目录名称实际上可能会改变。另外,如果使用当前工作目录而不是我的项目基目录执行,这将会中断。
有什么想法吗?
最佳答案
最好的方法可能是使用 ${project.basedir}/src/test/resources
。测试资源目录不太可能更改,并且无论您的工作目录如何,它都会安全地解析为正确的路径。尝试通过属性引用测试资源目录是有问题的,因为可能并且经常定义多个测试资源。您怎么知道该选择哪一个?
关于java - 是否有一种可移植的方法来获取 Maven 项目中资源的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6875891/