如何在Julia中开发包时调试单元测试



假设我开发了一个具有有限依赖项集的包(例如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)。

最新更新