Alcotest is a lightweight and colourful test framework.
Alcotest exposes simple interface to perform unit tests. It exposes
TESTABLE module type, a
check function to assert test
predicates and a
run function to perform a list of
unit -> unit
Alcotest provides a quiet and colorful output where only faulty runs are fully displayed at the end of the run (with the full logs ready to inspect), with a simple (yet expressive) query language to select the tests to run.
A simple example:
(* Build with `ocamlbuild -pkg alcotest simple.byte` *) (* A module with functions to test *) module To_test = struct let capit letter = Char.uppercase letter let plus int_list = List.fold_left (fun a b -> a + b) 0 int_list end (* The tests *) let capit () = Alcotest.(check char) "same chars" 'A' (To_test.capit 'a') let plus () = Alcotest.(check int) "same ints" 7 (To_test.plus [1;1;2;3]) let test_set = [ "Capitalize" , `Quick, capit; "Add entries", `Slow , plus ; ] (* Run it *) let () = Alcotest.run "My first test" [ "test_set", test_set; ]
The result is a self-contained binary which displays the test results. Use
./simple.byte --help to see the runtime options.
$ ./simple.byte test_set 0 Capitalize. [OK] test_set 1 Add entries. [OK] Test Successful in 0.001s. 2 tests run.
See the examples folder for more examples.