Я использую VSCode и набор пакетов Ionide для создания консольного приложения на F #. Мне нужно добавить модульные тесты в приложение, чтобы, когда я ctrl+shift+p FAKE: Build
проект, тесты выполнялись в процессе сборки.
В качестве примера я создал фиктивный проект в Github.
Первоначально директории test
там не было. Я создал test
каталог и в этой папке создал второй проект TestProj.Test
(задним числом я должен был использовать более описательные имена) для целей тестирования. Я добавил .fsproj
файл из TestProj
в этот проект, чтобы я мог ссылаться на SimpleFunctions.fs
. NUnit.Framework
и FsUnit
добавляются к TestProj.Test
. Test.fs
содержит два простых теста.
Я намеренно создал TestProj.Test
как F # library
, потому что прочитал в SO, что проект тестирования должен быть библиотекой, а не консольным приложением.
Я добавил строки 9, 31–37 и 47 в build.fsx
файл по умолчанию, который поступает из Ионид.. Однако, когда я создаю весь проект (т.е. TestProj
), сборка не выполняется, и я получаю следующую ошибку:
1) System.Exception: NUnit: cannot run tests (the assembly list is empty).
at Fake.NUnitSequential.NUnit(FSharpFunc`2 setParams, IEnumerable`1 assemblies) in C:\code\fake\src\app\FakeLib\UnitTest\NUnit\Sequential.fs:line 22
at [email protected](Unit _arg3)
at Fake.TargetHelper.runSingleTarget(TargetTemplate`1 target) in C:\code\fake\src\app\FakeLib\TargetHelper.fs:line 492
Строка 22 Sequential.fs
предполагает, что assemblies
пусто.
Что я делаю неправильно? Как мне настроить файл build.fsx
, чтобы тесты в TestProj.test
выполнялись успешно? Или что-то не так с файлом Tests.fs
в TestProj.Test
? Это кажется особенно трудным; есть ли более простой способ включить тесты, которые запускаются автоматически с VSCode, Iondide и F#
?