标签: ounit

在OCaml中使用OUnit模块 - 未绑定模块OUnit错误

我正在尝试将OUnit与OCaml一起使用.

单位代码源(unit.ml)如下:

open OUnit

let empty_list = []
let list_a = [1;2;3]

let test_list_length _ =
  assert_equal 1 (List.length empty_list);
  assert_equal 3 (List.length list_a)
    (* etc, etc *)

let test_list_append _ =
  let list_b = List.append empty_list [1;2;3] in
  assert_equal list_b list_a

let suite = "OUnit Example" >::: ["test_list_length" >:: test_list_length;
                                  "test_list_append" >:: test_list_append]
let _ =
  run_test_tt_main suite
Run Code Online (Sandbox Code Playgroud)

有了ocamlc unit.ml,我收到了一条错误消息Error: Unbound module OUnit.为什么是这样?如何在OCaml中使用OUnit.我安装了OUnit opam.

ocaml unit-testing opam ounit

4
推荐指数
1
解决办法
1888
查看次数

使用 dune 运行 OUnit 测试

我在运行 OUnit 测试时遇到困难,主要是因为我对沙丘和 OUnit 都不熟悉。dune我跑步时抱怨dune runtest

File "test/dune", line 4, characters 13-14:
Error: Library "f" not found.
Hint: try: dune external-lib-deps --missing @runtest
Run Code Online (Sandbox Code Playgroud)

这是项目结构:

??? dune
??? f.ml  # This is the source file.
??? test
    ??? dune
    ??? f_test.ml  # This is the test.
Run Code Online (Sandbox Code Playgroud)

这是dune

(executable
  (name f))
Run Code Online (Sandbox Code Playgroud)

这是test/dune

(test
  (name f_test)
  (libraries oUnit f))  ; <- `f` here causes problems.
Run Code Online (Sandbox Code Playgroud)

我可以看到错误出现是因为沙丘不知道 about f.ml,因此f在沙丘文件中不知道。

如何f.mltest/dune …

ocaml ounit ocaml-dune

4
推荐指数
1
解决办法
1261
查看次数

在 OCaml 中为模块编写单元测试的正确方法

我在文件中有给定的接口规范module.mli。我必须将其实现写入module.ml文件中。

module.mli提供一个抽象类型

type abstract_type
Run Code Online (Sandbox Code Playgroud)

我正在使用 OUnit 来创建测试。我需要在其中使用类型的实现。(例如比较值)一种解决方案是扩展接口以包含测试中使用的附加函数。

但是不修改接口就可以做到这样的事情吗?

ocaml unit-testing ounit

4
推荐指数
1
解决办法
2667
查看次数

标签 统计

ocaml ×3

ounit ×3

unit-testing ×2

ocaml-dune ×1

opam ×1