打开 NUnit.Framework - 命名空间或模块未定义。在 F# 中引用
open NUnit.Framework - the namespace or module is not defined. Referencing in F#
我正在使用 VS2013 Professional
、F#
、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
结果:
我正在使用 VS2013 Professional
、F#
、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
结果: