FsUnit没有定义

时间:2016-03-03 16:27:49

标签: visual-studio f# fsunit

我最近在学习F#。今天我写了一些代码并尝试添加单元测试。

我计划创建两个项目,一个用于代码,另一个用于测试。

因此,我在Visual Studio 2015社区中创建了一个名为library(stringr) matrix(str_count(aa, "A"), nrow=nrow(aa), ncol = ncol(aa)) [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 2 4 0 4 2 4 2 0 4 0 [2,] 2 4 NA NA NA 4 2 0 4 0 [3,] NA NA NA NA NA 4 2 NA NA NA [4,] 2 4 NA NA NA 0 4 2 4 0 [5,] 2 4 4 4 2 4 2 2 4 0 [6,] 2 4 4 0 4 0 4 2 4 4 [7,] 2 4 NA NA NA 0 2 2 4 4 [8,] 2 4 NA NA NA 0 4 2 4 0 [9,] 2 4 NA NA NA 0 4 2 4 0 [10,] 2 4 NA NA NA 0 3 2 4 1 的新解决方案,其中包含一个名为DataLab的项目。然后我添加了另一个名为Source的项目。

结构如下:

Test

Solution 'DataLab' Source Queue.fs Test QueueTest.fs 是:

Queue.fs

namespace DataLab type Queue<'a> = Queue of 'a list * 'a list module Queue = let init<'a> : Queue<'a> = Queue ([], []) 是:

QueueTest.fs

然后VS警告我namespace DataLab.Test module QueueTest = open DataLab open FsUnit open NUnit.Framework [<Test>] let ``test Init`` () = let expected : Queue<int> = Queue ([], []) Queue.init<int> |> should equal expected 中的open陈述。其中一个是:

  

未定义名称空间或模块“FsUnit”

所以我为QueueTest.fs项目添加了对Source项目的引用。我还通过NuGet为Test项目安装了FsUnit

我没有安装Test,因为它是NUnit的依赖关系。

我没有为FsUnit项目安装FsUnit,因为Source不需要测试库。
我想让它与maven中JUnit依赖的Source类似。

我成功构建了整个解决方案。

当我在“测试资源管理器”中运行测试时(我还安装了“NUnit3测试适配器”扩展程序),我收到以下错误:

<scope>test</scope>

经过一些随机尝试后,我也通过将System.MissingMethodException : Method not found: 'DataLab.Queue`1<!0> DataLab.Queue`1.NewQueue(Microsoft.FSharp.Collections.FSharpList`1<!0>, Microsoft.FSharp.Collections.FSharpList`1<!0>)'. 安装到FsUnit项目来成功执行测试。

我对这个问题有一个理论。

我安装了Source,其依赖关系为FsUnit 2.0.0。因此FSharp.Core (>= 3.1.2.5)已安装到我的FSharp.Core 3.1.2.5项目中。这污染了我的Test文件。 我在Test.fsproj中有以下行:

Test.fsproj

同时<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFSharpCoreVersion>4.4.0.0</TargetFSharpCoreVersion> <ItemGroup> <Reference Include="FSharp.Core"> <HintPath>..\packages\FSharp.Core.3.1.2.5\lib\net40\FSharp.Core.dll</HintPath> <Private>True</Private> </Reference> 项目仍在使用VS 2015内置F#,其版本为4.0+。所以F#的两个版本冲突。

但我不知道如何证明它或如何解决它。

0 个答案:

没有答案