使用OCaml+OUnit2执行单元测试时遇'Library ounit2 not found'错误求助
解决OUnit2库找不到的问题
确认OUnit2已安装到当前OPAM环境
首先执行以下命令安装OUnit2(如果还未安装):opam install ounit2安装后确保OPAM环境已激活:
eval $(opam env)在项目配置中声明OUnit2依赖
修改
dune-project文件
打开项目根目录的dune-project,添加OUnit2作为测试依赖,示例内容如下:(lang dune 3.11) (generate_opam_files true) (name mon_project) (depends ocaml ounit2 :with-test)with-test标记表示该依赖仅在构建测试代码时生效。手动维护OPAM文件的情况(如果未使用
generate_opam_files)
如果你的mon_project.opam是手动编写的,需要在depends字段中添加测试依赖:depends: [ "ocaml" "ounit2" {test} ]
调整测试目录的Dune配置(可选,针对你的项目结构)
你的sum.ml在bin目录下,测试代码需要引用这个模块,所以test/dune需要同时链接项目自身的库:(executable (name test) (libraries ounit2 mon_project))这里
mon_project是你的项目库名,需要确保bin或lib目录的Dune配置正确生成了这个库(比如bin/dune里有(library (name mon_project) (modules sum))之类的配置)。重新构建项目
执行以下命令重新构建:dune build或者直接构建测试目标:
dune build @test
内容的提问来源于stack exchange,提问作者flori10
相关产品推荐
相关产品推荐

