打开 NUnit.Framework - 命名空间或模块未定义。在 F# 中引用

open NUnit.Framework - the namespace or module is not defined. Referencing in F#

我正在使用 VS2013 ProfessionalF#C#Nunit。值得注意的是,这是我第一次尝试 F#,所以问题很可能很愚蠢,解决方案很明显。

我想做的是使用 NUnit 实现测试用例,并将 TestCaseSource 属性与 TestCaseData 一起使用。

测试:

namespace Legal.Tests.Helpers
open System
open System.Collections.Generic
open System.Linq
open System.Text
open System.Threading.Tasks
open NUnit.Framework
open Legal.Website.Infrastructure

type FTest() = 
    [<TestFixture>]
    [<TestCaseSource("FTestData")>]
    let ConcatTest(text : string, expected : string) =
    [<Test>]
        let actual = Saga.Services.Legal.Website.Infrastructure.FunctionModule.TestFunction text
        Assert.AreEqual expected actual
    let FTestData : seq<TestCaseData> = [ new TestCaseData (text = "x", expected = "Item1xItem2" ); new TestCaseData (text = "y", expected = "Item1yItem2" ) ] 

功能测试:

namespace Legal.Website.Infrastructure

open System
open System.Collections.Generic
open System.Linq
open System.Web

type Test(text2 : string) = 
  member this.Text = "Item1"
  member this.Text2 = text2

module functions = 
    let TestFunction (text : string) =
        let test = new Test (text2 = "Item2")
        String.Concat [test.Text; text; test.Text2]

值得注意的一件事 - 我通过将 .cs 文件重命名为 .fs 创建了 F# 测试文件和带功能的文件。

问题: 当我尝试 open 任何不是 System 的库(在本例中为 Nuget 包 NUnit.Framework 和引用的项目Legal.Website.Infrastructure) 我得到错误:the namespace or module is not defined 两者都在测试项目中被引用,.cs 测试在同一目录中 运行 很好。

我的问题很愚蠢。

.fs 文件无法添加到 C# 项目,例如 .vb 文件。要正确执行此操作,需要将 F# 项目添加到解决方案中,请参见下面的屏幕截图。

实施:

module Implementation

let Concat(text:string) = 
    "root"+ text

测试:

module Test
open NUnit.Framework

[<TestFixture>]
type Test() = 
    member this.ConcatinationTestData() = 
        [new TestCaseData("roottext","text"); new TestCaseData("root","")]
    [<Test>]
    [<TestCaseSource("ConcatinationTestData")>]
    static member ConcatinationTest(expected:string, text:string) =
       Assert.AreEqual(expected,Implementation.Concat(text))
       |> ignore

调试 -> 附加到进程 -> nunit-agent.exe

结果: