FAKE + Nunit:找不到nunit-console.exe

时间:2018-03-20 20:06:02

标签: f# f#-fake nunit-console

我是FSharp.Charting的维护者。最近我们的FAKE测试规则开始打破下面报告的错误(特别是我打电话给build.cmd RunTests)。 FAKE似乎正在为nunit-console找到错误的路径和exe名称,它位于packages / NUnit.ConsoleRunner / tools / nunit3-console.exe。我不确定这是否是版本问题,或者我是否需要更新我的build.fsx脚本以考虑对FAKE和/或NUnit的更改。任何指导都将不胜感激。

System.Exception: Start of process c:\GitHub\FSharp.Charting_20180310\tools\Nunit\nunit-console.exe failed. The system cannot find the file specified
at Fake.ProcessHelper.ExecProcessWithLambdas@91-16.Invoke(String message) in C:\code\fake\src\app\FakeLib\ProcessHelper.fs:line 91
at Fake.ProcessHelper.ExecProcessWithLambdas(FSharpFunc2 configProcessStartInfoF, TimeSpan timeOut, Boolean silent, FSharpFunc2 errorF, FSharpFunc2 messageF) in C:\code\fake\src\app\FakeLib\ProcessHelper.fs:line 91 
at Fake.NUnitSequential.NUnit(FSharpFunc2 setParams, IEnumerable1 assemblies) in C:\code\fake\src\app\FakeLib\UnitTest\NUnit\Sequential.fs:line 26 
at FSI_0005.Build.clo@113-10.Invoke(Unit _arg6) at Fake.TargetHelper.runSingleTarget(TargetTemplate1 target) in C:\code\fake\src\app\FakeLib\TargetHelper.fs:line 626

paket.lock的一些相关内容:

FAKE (4.61.3) - framework: net40, net45, net461
NUnit (3.7.1) - framework: net40, net45, net461
NUnit.ConsoleRunner (3.6.1) - framework: net40, net45, net461
NUnit.Runners (3.6.1) - framework: net40, net45, net461
NUnit.ConsoleRunner (>= 3.6.1) - framework: net40, net45, net461

编辑:修复了build.cmd测试命令,并提供了显式的nunit-console路径。

1 个答案:

答案 0 :(得分:1)

根据@Charles Mager的其他评论,有两种可能的解决方案:

  1. 感谢@TeaDrivenDev我发现FAKE(v4)和NUnit之间存在版本错位,不受限制下载最新的v3稳定版。这可以通过将paket.dependencies中的NUnit和NUnit.Runners绑定到2.6.3或更高版本来实现,最高可达<3.0。

  2. 更新build.fsx以使用NUnit3。这涉及open Fake.Testing并将NUnit调用更新为NUnit3。此外,某些NUnit参数名称已更新或弃用。可以找到此方法的完整详细信息here

  3. 我选择了解决方案2,因为它让我们了解当前的NUnit。