测试 Julia 包时如何包含位于测试文件夹外部的文件

log*_*ick 4 julia

我正在尝试对我的包进行一些测试,并且我需要使用的文件位于数据文件夹中,因此当我尝试在代码中使用它时,我会这样做,randomFuncName(joinpath(@__DIR__, "src", "data", "etc", "etc"))但问题是因为我位于“test”文件夹中(假设我正在运行测试)它创建“.../.../test/src/data/...”的相对路径,而不仅仅是“src/data”。

关于如何在不使用绝对路径的情况下指定此路径(这样它可以在 CI 和其他系统上工作)的任何想法?

Prz*_*fel 5

我更喜欢使用包的位置而不是依赖相对路径。例如,当您的项目增长时,您可能希望拥有许多测试文件并将它们移动到子文件夹中。始终依赖joinpath(@__DIR__, "..","something")意味着您正在对运行测试的文件所在位置做出一些假设。

因此我要做的是使用pathof(Module)

using PackageName
BASE_FOLDER = dirname(dirname(pathof(PackageName)))
test_file = joinpath(BASE_FOLDER, "data", "file.txt")
Run Code Online (Sandbox Code Playgroud)

当然,这是非常主观的:-)