Flu*_*lux 4 ocaml ounit ocaml-dune
我在运行 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.ml以test/dune了解f我使用的库的方式进行沙丘编译test/f_test.ml?如何正确运行单元测试?
一种可能是拆分f为私有库和可执行文件,然后测试拆分库。
编辑:
例如,项目结构可以更新为
??? dune
??? f.ml # f only contains the I/O glue code.
??? lib
| ??? dune
| ??? a.ml # a implements the features that need to be tested.
??? test
??? dune
??? test.ml # This is the test.
Run Code Online (Sandbox Code Playgroud)
和 dune
(executable (name main) (libraries Lib))
Run Code Online (Sandbox Code Playgroud)
对于测试,test/dune:
(test (name test) (libraries Lib oUnit))
Run Code Online (Sandbox Code Playgroud)
最后 lib/dune
(library (name Lib))
Run Code Online (Sandbox Code Playgroud)
使用此设置,可以使用dune runtest.
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |