假设我开发了一个具有有限依赖项集的包(例如LinearAlgebra)。在单元测试部分,我可能需要额外的依赖项(例如,加载文件的CSV)。我可以在Project.toml
中配置它。
现在,在VS代码中,我如何调试单元测试?我试着运行";runtests.jl";在调试器中;然而,它毫不奇怪地抱怨CSV包不可用。
我可以添加CSV包(作为临时解决方案),但我更希望调试器与单元测试的配置一起运行;我怎样才能做到这一点?
根据要求,以下是如何复制它(它不是很小,但我使用了一个常用的包,因为它让人相信包不是问题所在)。我们将使用DataFrames并尝试为其单元测试执行调试器。
- 制作
DataFrames
的本地版本,以便在其中开发功能。我在一个新的REPL中执行dev DataFrames
- 通过VS代码用户界面选择正确的环境(在
.julia/dev/DataFrames
中) - 执行";适当的";通过在pkg提示符下执行
test DataFrames
进行单元测试。一切都应该顺利 - 尝试直接执行测试(打开
runtests.jl
并使用vs代码中的"Run"按钮)。我看到一些类型的错误:
LoadError: ArgumentError: Package CategoricalArrays not found in current path:
- Run `import Pkg; Pkg.add("CategoricalArrays")` to install the CategoricalArrays package.
这与存在于Project.toml的CCD_ 7部分中但不存在于CCD_。
- 最后;运行";命令,执行";运行和调试";。我在这里遇到的类似错误是第一个:
Test Summary: | Pass Total
merge | 19 19
PASSED: index.jl
FAILED: dataframe.jl
LoadError: ArgumentError: Package DataStructures not found in current path:
- Run `import Pkg; Pkg.add("DataStructures")` to install the DataStructures package.
因此,在需要额外软件包的部分之后,我无法调试代码。
- 毕竟,我在pkg提示符下使用命令
free DataFrames
删除了这个软件包
我在包中看到了相同的行为。
我不确定我是否理解您的问题,但我认为您可能正在寻找TestEnv包。它允许您激活包含[extras]
依赖项的临时环境。话语公告包含了对用例的良好描述。
runtest.jl
文件应该包含运行测试所需的所有导入。
因此,您的runtests.jl
文件行中应包含以下行:
using YourPackageName
using CSV
# the lines with tests now go here.
这是Julia软件包布局中的标准。举个例子,看看任何成熟的Julia,比如DataFrames.jl
(https://github.com/JuliaData/DataFrames.jl/blob/main/test/runtests.jl)。