如何正确使用NUnit和F#?

时间:2015-02-21 17:42:37

标签: f# nunit fsunit

我坚持使用单元测试。我有以下源代码:

module SampleTest
open FsUnit

open NUnit.Framework

[<TestFixture>]
[<Category("Category name")>]
type DoSthTest() =

    let mutable state = []

    [<SetUp>]
    member public x.``run before test``() =
        state = []

    [<Test>]
    member x.``add item``() =
        state <- List.append state [1]
        state.Length |> should equal 1

一般来说它运行良好....但没有[]函数。 我收到以下异常:结果消息:SetUp或TearDown方法的签名无效:在测试之前运行

有人知道答案的原因吗? 第二个问题是:是否可以在没有类型定义的情况下编写单元测试,但是SetUp也可以正常工作? 我的意思是这样的:

module SampleTest

open FsUnit
open NUnit.Framework


let mutable state = []

[<SetUp>]
let ``run before test``() =
    state = []

[<Test>]
let ``add item``() =
    state <- List.append state [1]
    state.Length |> should equal 1

我再次得到了与之前相同的例外

1 个答案:

答案 0 :(得分:3)

在F#中,使用<-而非=分配可变值。

因此,您的安装方法应如下所示:

[<SetUp>]
member public x.``run before test``() =
    state <- []

工作正常。

对于您的第二个问题,如果您进行与上述相同的更改,此布局适合我。