Я хочу запустить модульный тест с помощью OCaml и OUnit2. Я выполнил инструкции в этом уроке https://cs3110.github.io/textbook/chapters/data/ounit.html
Однако, когда я бегу
dune build
Я получаю ошибку
$ dune build
File "test/dune", line 3, characters 12-18:
3 | (libraries ounit2))
^^^^^^
Error: Library "ounit2" not found.
-> required by _build/default/test/test.exe
-> required by alias test/all
-> required by alias default
Моя структура каталогов выглядит следующим образом:
│ dune-project
│ mon_project.opam
│
├───bin
│ dune
│ main.ml
│ sum.ml
│
├───lib
│ dune
│
├───test
│ dune
│ mon_project.ml
│ test.ml
Файл дюны в тесте каталога выглядит так:
(executable
(name test)
(libraries ounit2))
sum.ml и test.ml точно такие же, как в уроке.
Что я делаю не так?
В качестве обоснованного предположения, основанного на чтении инструкций, на которые вы ссылаетесь, в которых вообще не упоминается установка библиотек, вы не установили библиотеку ounit2
через opam. Dune — это система управления сборкой, но не система управления пакетами, и она не будет устанавливать необходимые зависимости.
К счастью, установить необходимую библиотеку несложно.
opam install ounit2
После установки вы сможете узнать, где он установлен, с помощью:
ocamlfind query ounit2
opam install unit2 сделал свое дело. Я не знал, что мне нужно устанавливать такие библиотеки. Большое спасибо!