Ste*_*ven 5 f# unit-testing f#-fake visual-studio-code ionide
我正在使用VSCode和Ionide套件来在F#中创建一个控制台应用程序.我需要向应用程序添加单元测试,以便ctrl+shift+p FAKE: Build在项目完成时,测试在构建过程中运行.
最初,test目录不存在.我创建了testdir并在该文件夹中创建了第二个项目TestProj.Test(事后看来,我应该使用更多的描述性名称)用于测试目的.我将.fsproj文件添加TestProj到此项目中,以便我可以参考SimpleFunctions.fs. NUnit.Framework并FsUnit添加到TestProj.Test. Test.fs包含两个简单的测试.
我故意创建了TestProj.Test一个F#,library因为我在SO上读到测试项目需要是一个库而不是一个控制台应用程序.
我将第build.fsx9,31-37和47行添加到来自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 FSI_0005.Build.clo@31-3.Invoke(Unit _arg3)
at Fake.TargetHelper.runSingleTarget(TargetTemplate`1 target) in C:\code\fake\src\app\FakeLib\TargetHelper.fs:line 492
Run Code Online (Sandbox Code Playgroud)
Sequential.fs建议的第22行assemblies是空的.
我究竟做错了什么?我应该如何设置build.fsx文件以使测试TestProj.test成功运行?或者,该Tests.fs文件有问题TestProj.Test吗?这似乎特别困难; 是否有更简单的方法来包含使用VSCode,Iondide和F#?自动运行的测试?
您的项目存在一些问题:
尝试在构建之前进行测试"Clean" ==> "Test" ==> "Build" ==> "Deploy"
=> 将目标依赖项更改为"Clean" ==> "Build" ==> "Test" ==> "Deploy"
用于测试的单独包配置(test子文件夹中的 paket.dependency、paket.lock)这会导致引用的依赖项的版本不一致
=> 删除paket.dependencies并paket.lock从test
NUnit 版本的有毒组合=> 删除对from
的显式引用并运行NUnit.Frameworkpaket.dependenciespaket.exe install
测试项目中的类型扩展无效
=>更改type Test()或删除无用的文件
构建创建所有项目(而不仅仅是src/app)的输出./build,但测试在 => 中查找 DLL ./test
=> 将测试文件模式更改为buildDir + "**/*.Test.dll"
如果你想使用 NUnit3
=>open Fake.Testing并使用NUnit3而不是NUnit
最后,你应该提交 paket.bootstrapper.exe
我建议您使用预定义的模板或从小处开始,确保您理解每个步骤并检查它是否按预期工作。一旦你遇到了一个不起作用的解决方案,就很难回到正轨。
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |