Запуск тестов OUnit с использованием дюны
У меня проблемы с запуском тестов OUnit, в основном из-за того, что я новичок в Dune и 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
Вот структура проекта:
├── dune
├── f.ml # This is the source file.
└── test
├── dune
└── f_test.ml # This is the test.
Это dune
:
(executable
(name f))
Это test/dune
:
(test
(name f_test)
(libraries oUnit f)) ; <- `f` here causes problems.
Я вижу, что ошибка появляется, потому что дюна не знает о f.ml
и, следовательно, не знает о f
в файле дюны.
Вопрос в том, как сделать компиляцию дюн f.ml
таким образом, что test/dune
знает о f
библиотека, которую я использую в test/f_test.ml
? Как правильно запустить юнит-тесты?
1 ответ
Одна возможность состоит в том, чтобы разделить 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.
с dune
(executable (name main) (libraries Lib))
Для теста, test/dune
:
(test (name test) (libraries Lib oUnit))
и наконец lib/dune
(library (name Lib))
При такой настройке тест можно запустить с dune runtest
,