2014-10-17 50 views
1

我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.(==>);;

編譯失敗後: 錯誤:未綁定模塊亞軍。

但沒有模塊被稱爲「飛人」 ......

任何想法得到這個工作?

+0

的淨一些搜索之後,存在快速** 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

回答

1

嘗試使用包QTest2Lib代替QTEST或快速檢查:

corebuild footest2.native -pkg QTest2Lib 
+0

Thx!它工作正常! – 2014-11-16 16:03:45