Выполнение тестов OUnit с использованием дюны - PullRequest
0 голосов
/ 15 ноября 2018

У меня проблемы с запуском тестов 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

Вот структура проекта:

├── 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 Ответ

0 голосов
/ 15 ноября 2018

Одна из возможностей - разделить f на личную библиотеку и исполняемый файл, а затем протестировать библиотеку разделения.

EDIT:

Например, структура проекта может быть обновлена ​​до

├── 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.

...