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



我正在尝试对我的包进行一些测试,我需要使用的文件位于数据文件夹中,所以当我尝试在代码中使用它时,我会执行randomFuncName(joinpath(@__DIR__, "src", "data", "etc", "etc")),但问题是,由于我在;测试";文件夹(假设我正在运行测试(,它创建了"…/…"的相对路径/test/src/data/"而不仅仅是";src/data";。

关于如何在不使用绝对路径的情况下指定此路径(以便它在CI和其他系统上工作(,有什么想法吗?

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

因此,我将使用pathof(Module):

using PackageName
BASE_FOLDER = dirname(dirname(pathof(PackageName)))
test_file = joinpath(BASE_FOLDER, "data", "file.txt")

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

@__DIR__取决于您所在的文件,而不是pwd。所以你可以从src内部调用f(joinpath(@__DIR__, "foo.jl")),从test内部调用f(joinpath(@__DIR__, "..", "src", "foo.jl"))

最新更新