Używam pakietów VSCode i Ionide pakietów do tworzenia aplikacji konsolowej w F #. Muszę dodać testy jednostkowe do aplikacji, aby po I ctrl+shift+p FAKE: Build
projekcie testy były uruchamiane podczas procesu budowania.Dodawanie testów jednostkowych do projektu F # w VSCode
Jako przykład stworzyłem dummy project in Github.
Początkowo nie było tam katalogu test
. Stworzyłem katalog test
i do tego folderu utworzyłem drugi projekt TestProj.Test
(z perspektywy czasu powinienem użyć bardziej opisowych nazw) do celów testowych. Do tego projektu dodałem plik .fsproj
z TestProj
, dzięki czemu mógłbym odwołać się do SimpleFunctions.fs
. NUnit.Framework
i FsUnit
są dodawane do TestProj.Test
. Test.fs
zawiera dwa proste testy.
Celowo utworzyłem TestProj.Test
jako F # library
, ponieważ czytałem na SO, że projekt testowy musiał być biblioteką, a nie aplikacją konsolową.
Dodałem wiersze 9, 31-37 i 47 do domyślnego build.fsx
file that comes from Ionide.. Jednak, kiedy zbudować cały projekt (tj TestProj
), kompilacja nie powiedzie się i pojawia się następujący błąd:
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
sugeruje, że assemblies
jest pusty.
Co robię źle? Jak skonfigurować plik build.fsx
, aby testy w trybie TestProj.test
przebiegły pomyślnie? Alternatywnie, czy jest coś nie tak z plikiem Tests.fs
w TestProj.Test
? Wydaje się to szczególnie trudne; czy istnieje łatwiejszy sposób włączenia testów, które działają automatycznie z VSCode, Iondide i F#
?
Twój cel "Test" szuka "NUnit.Test. *. Dll", podczas gdy "TestProj.Test" tworzy podobną bibliotekę dll. BTW, istnieje kilka innych możliwych ulepszeń w twojej strukturze projektu. Jeśli chcesz, chciałbym podnieść PR przez EOD WEST. – CaringDev
Aby utworzyć pełnoprawny projekt F # zawierający dokumentację, możesz rzucić okiem na [ProjectScaffold] (https://fsprojects.github.io/ProjectScaffold/) – CaringDev
Użyłem wcześniej ProjectScaffold, ale jest tak wiele rzeczy nie potrzebuję ani nie rozumiem. Miałem nadzieję, że tego uniknę, ale będę musiał użyć go, jeśli nie będę w stanie samodzielnie uruchomić ram testowych. Być może jest jeszcze za wcześnie, ale nie rozumiem skrótów "PR", "EOD" i "WEST", ponieważ używasz ich tutaj. Wyjaśnienie proszę? – Steven