OCamlでユニットテストを書きたい
以下を参考に試してみる。
ounit2をインストール
$ opam install ounit2
code:myAdd.ml
let add x y = x + y
code:myAddTest.ml
open OUnit2
let test_add1 test_ctx = assert_equal 5 (MyAdd.add 2 3)
let test_add2 test_ctx = assert_equal (-1) (MyAdd.add 2 (-3))
let suite =
"suite" >:::
["test_add1">:: test_add1;
"test_add2">:: test_add2]
let _ = run_test_tt_main suite
コンパイルして実行してみる。
code:sh
$ ocamlfind ocamlc -o myAddTest -package ounit2 -linkpkg -g myAdd.ml myAddTest.ml
$ ./myAddTest
..
Ran: 2 tests in: 0.11 seconds.
OK
ひとつのファイルの実装とテストをまとめる
実装とテストをひとつのファイルにまとめることも可能。-test オプションをつけた時だけテストを実行する。
code:myAdd.ml
(* 実装 *)
let add x y = x + y
(* テスト *)
open OUnit2
let test_add1 test_ctx = assert_equal 5 (add 2 3)
let test_add2 test_ctx = assert_equal (-1) (add 2 (-3))
let suite =
"suite" >:::
["test_add1">:: test_add1;
"test_add2">:: test_add2]
let _ = Arg.parse
(fun _ -> ())
"myAdd <options>"
コンパイルして実行。-test オプションをつけた時だけテストが実行される。
code:sh
$ ocamlfind ocamlc -o myAdd -package ounit2 -linkpkg -g myAdd.ml
$ ./myAdd -test
..
Ran: 2 tests in: 0.11 seconds.
OK
$ ./myAdd
$