如何在 F# 中正确使用 NUnit?

How to use NUnit with F# properly?

我坚持进行单元测试。我有以下源代码:

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 方法的签名无效:运行 before test

有人知道为什么吗? 第二个问题是:是否可以在没有类型定义的情况下编写单元测试,但 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

我又遇到了和以前一样的异常

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

因此您的设置方法应该如下所示:

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

效果很好。

关于你的第二个问题,如果你做与上面相同的更改,这个布局对我来说很好。