我在F#玩单元测试。我正在运行Visual Studio 2013社区版。我创建了一个测试项目并安装了NUnit 2.6.4
和FsUnit 1.3.0.1
。我使用了Package Manager Console。我添加了对项目中库的引用,并在我的脚本文件中引用了DLL并添加了open
子句:
#r @"C:\Users\pw\Documents\Visual Studio 2013\Projects\FSharpForQuantFirst\packages\FsUnit.1.3.0.1\Lib\Net40\FsUnit.NUnit.dll"
#r @"C:\Users\pw\Documents\Visual Studio 2013\Projects\FSharpForQuantFirst\packages\NUnit.2.6.4\lib\nunit.framework.dll"
open NUnit.Framework
open NUnit.Framework.Constraints
open FsUnit
1 |> should equal 1
我的代码中没有错误也没有警告。但是,当我在F#Interactive中运行代码时,最后一行会触发以下错误:
Test.fsx(8,6)
:错误FS0074
:通过'NUnit.Framework.Constraints.Constraint'
引用的类型是在未引用的程序集中定义的。您必须添加对程序集'nunit.framework'
的引用。
但我已经添加了nunit.framework
的引用。
我清理了项目,重新安装了软件包,删除并添加了引用,但结果是一样的。我仍然得到错误。知道问题是什么以及如何解决它?
答案 0 :(得分:2)
如果您可能已注意到,app.config
有nunit.framework
具有<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="nunit.framework" publicKeyToken="96d09a1eb7f44a77" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.6.4.14350" newVersion="2.6.4.14350" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
的绑定重定向。
NUnit 2.6.3
F#Interactive不考虑此问题,因此您必须使用FsUnit.NUnit.dll
引用的NUnit
。
请将2.6.3
降级为{{1}}并确保重置F#互动会话。