OUnit - это среда модульного тестирования для OCaml, основанная на HUnit, среде модульного тестирования для Haskell.

С OUnit, как и с JUnit, вы можете легко создавать тесты, давать им имена, группировать их в наборы и выполнять их, при этом платформа автоматически проверяет результаты.

Основной принцип набора тестов - наличие файла test.ml который будет содержать тесты и тестируемый модуль OCaml с именем foo.ml.

файл foo.ml:

(* The functions we wish to test *)
let unity x = x;;
let funix ()= 0;;
let fgeneric () = failwith "Not implemented";;

Суть теста - убедиться, что тестируемая функция имеет ожидаемое поведение. Вы проверяете поведение, используя функции assert. Самый простой -OUnit2.assert_equal. Эта функция сравнивает результат функции с ожидаемым результатом.

Наиболее полезные функции:

  • OUnit2.assert_equal базовая функция утверждения
  • OUnit2.(>:::) определить список тестов
  • OUnit2.(>::) назвать тест
  • OUnit2.run_test_tt_main для запуска набора тестов, который вы определяете
  • OUnit2.bracket_tmpfile которые создают временное имя файла.
  • OUnit2.bracket_tmpdir которые создают временный каталог.

файл test.ml:

open OUnit2;;

let test1 test_ctxt = assert_equal "x" (Foo.unity "x");;

let test2 test_ctxt = assert_equal 100 (Foo.unity 100);;

(* Name the test cases and group them together *)
let suite =
  "suite">:::
    ["test1">:: test1;
     "test2">:: test2]
;;

let () =
  run_test_tt_main suite
;;

И скомпилируйте модуль

$ ocamlfind ocamlc -o test -package oUnit -linkpkg -g foo.ml test.ml

Исполняемый файл с именем "test"будет создан. При запуске он дает следующий результат:

$ ./tests
..
Ran: 2 tests in: 0.00 Seconds
OK

Когда используешь OUnit2.run_test_tt_main, ненулевой код выхода сигнализирует, что набор тестов не прошел успешно.

( Источник)