Я использую VSCode и набор пакетов Ionide для создания консольного приложения в F #. Мне нужно добавить в приложение единичные тесты, чтобы при запуске проекта ctrl+shift+p FAKE: Build
тесты выполнялись в процессе сборки.Добавление модульных тестов в проект F # в VSCode
В качестве примера я создал dummy project in Github.
Первоначально, test
не было. Я создал директорию test
, и в эту папку был создан второй проект TestProj.Test
(в ретроспективе, я должен был использовать более описательные имена) для целей тестирования. Я добавил файл .fsproj
от TestProj
к этому проекту, чтобы я мог ссылаться на SimpleFunctions.fs
. NUnit.Framework
и FsUnit
добавлены к TestProj.Test
. Test.fs
содержит два простых теста.
Я намеренно создал TestProj.Test
как F # library
, потому что я прочитал о том, что проект тестирования должен быть библиотекой, а не консольным приложением.
Я добавил строки 9, 31-37 и 47 по умолчанию build.fsx
file that comes from Ionide.. Тем не менее, когда я строй всего проекта (т.е. 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
Line 22 of the Sequential.fs
assemblies
предполагает, что пуст.
Что я делаю неправильно? Как мне настроить файл build.fsx
, чтобы тесты в TestProj.test
успешно выполнялись? В качестве альтернативы, есть что-то не так с файлом Tests.fs
в TestProj.Test
? Это кажется особенно сложным; есть ли более простой способ включить тесты, которые запускаются автоматически с VSCode, Iondide и F#
?
Ваша цель «Тест» ищет «NUnit.Test. *. Dll», тогда как «TestProj.Test» создает именную DLL. Кстати, есть несколько других возможных улучшений для вашей структуры проекта. Если вы хотите, я бы поднял PR от EOD WEST. – CaringDev
Для создания полноценного проекта F #, включая документацию, вы можете посмотреть на [ProjectScaffold] (https://fsprojects.github.io/ProjectScaffold/) – CaringDev
Раньше я использовал ProjectScaffold, но было так много вещей, что я не нужны или не понимают. Я надеялся избежать этого, но может прибегнуть к тому, чтобы использовать его, если я не могу самостоятельно создать тестовую структуру. Кроме того, возможно, это слишком рано в мой день, но я не понимаю аббревиатуры «PR», «EOD» и «WEST», поскольку вы использовали их здесь. Объяснение пожалуйста? – Steven