我ocaml的設置如下:使用QTEST和快速檢查,編譯失敗的測試代碼
- ocaml的4.01.0
- OPAM 1.1.2
- QTEST 2.0.1(OPAM列表QTEST)
- 快速檢查1.0.0
與測試的源代碼內聯:
let rec foo x0 f = function
[] -> 0
| x::xs -> f x (foo x0 f xs);;
(*$T foo
foo 0 (+) [1;2] = 3
*)
QTEST -o footest2.ml提取foo.ml
然後不幸的是,footest2.ml編譯失敗:
corebuild footest2.native -pkg快速檢查
let ___tests = ref []
let ___add test = ___tests := test::!___tests
open OUnit;;
module Q = Quickcheck;;let (==>) = Q.(==>);;
Random.self_init()
module Test__environment_0 = struct
open Foo;;
let _test_2 = "foo" >::: [
"foo.ml:6" >:: (
#6 "foo.ml"
let foo = foo in fun() -> OUnit.assert_bool "foo.ml:6: foo 0 (+) [1;2] = 3" (
#6 "foo.ml"
foo 0 (+) [1;2] = 3));
];; let _ = ___add _test_2;;
end
let _ = exit (Runner.run ("" >::: List.rev !___tests))
錯誤存在: 「Error:Unbound module Quickcheck」
事實上,它應該是QuickCheck而不是Quickcheck--在解決這個問題後,我得到了錯誤:Error:Unbound value Q。==>。 去除後:
let (==>) = Q.(==>);;
編譯失敗後: 錯誤:未綁定模塊亞軍。
但沒有模塊被稱爲「飛人」 ......
任何想法得到這個工作?
的淨一些搜索之後,存在快速** C **赫克和快速** C **赫克(小寫VS上案件)。 qtest與quickcheck捆綁在一起 - 並且都可以在該位置:https://github.com/vincent-hugot/iTeML/tree/master/qtest。 而quickCheck來自Jane Street的核心:http://ocaml.janestreet.com/ocaml-core/109.09.00/doc/core。 問題是,通過opam獲得的quickcheck不是qtest預期的quickCheck。 它看起來像是唯一的方法是從上面的鏈接安裝qtest在一個單獨的目錄比.opam。 – 2014-10-24 19:08:19