在 F# 中,如何访问 .runsettings 的 TestContext?

In F#, how does one access the TestContext for .runsettings?

我正在为 F# 代码库中的第三方 C# 库编写集成测试。此集成测试有一些限制。

我已经通过了失败的测试,但不知道如何使用有效的许可证编写测试。函数 Initialize 只是第三方库的包装器,用于使用许可证初始化库和 returns 结果。

[<TestClass>]
type ``Test Local Initialize`` () =

    [<TestMethod>]
    member this.``When loading an invalid INI file`` () =
        let actual = 
            $@"{AppDomain.CurrentDomain.BaseDirectory}Resources\DummyLicense.INI"
            |> Initialize
        match actual with
        | Ok _ -> Assert.Fail("Should not initialize with an invalid configuration.")
        | Error e -> Assert.IsNotNull(e, "Should error with an invalid configuration")

我想写的测试是“给定一个有效的许可文件,初始化库应该 return 结果是 OK。”

在 C# 中,我会使用 .runsettings 指向许可证文件夹,但我是 F# 的新手,我不确定如何将 TestContext 添加到考试。由于测试被定义​​为 type,我猜它们不包含状态或字段。

所以我的问题是:

它的工作原理与 C# 中的非常相似。在您的测试 class 中,使用 ClassInitializeAssemblyInitialize 属性标记静态成员并指定上下文参数:

[<TestClass>]
type TestClass () =

    static let mutable myValue = ""

    [<ClassInitialize>]
    static member Setup(context : TestContext) =
        myValue <- string context.Properties.["MyValue"]

    [<TestMethod>]
    member this.TestMyValue() =
        Assert.AreEqual("xyzzy", myValue)