1

这是我的单元测试之一:

[<NCrunch.Framework.Isolated>]
let [<Test>] ``inputX test`` () =
    let simulator = Simulator(@"H:\MyProj\Inputs" @@ @"inputX.txt",false)
    use sw = new StringWriter() in Console.SetOut(sw)
    simulator.Run()
    let expected, actual =
        File.ReadAllText(@"H:\MyProj\Inputs" @@ @"inputX.out").Replace("\r",""),
        sw.ToString()
    StringAssert.Contains(expected, actual)

我在整个模拟器代码中执行 printfn,只要测试没有通过,NCrunch 就会在其输出窗口中显示输出。

我想在断言之后显示信息,但我不知道该怎么做,似乎也找不到简单的答案。

我想也许我需要类似的东西

Console.Set(NCrunchEnvironment.OuputStream)
printfn "%A" stuff

但这不存在。

我是否必须为模拟器创建一个新进程并以这种方式“捕获”输出?或者可能将一个流传递给模拟器(或从中返回一个)?

4

1 回答 1

0

NCrunch 并没有做任何我不认为的魔法,我相信它只是注册一个跟踪侦听器并输出在测试运行时出现在跟踪流中的消息。

我不是 F# 专家,但在 C# 中,我们只使用该Trace.WriteLine方法,NCrunch 将显示您放在那里的任何内容。我认为您应该能够在 F# 中使用相同的类

于 2015-07-27T16:07:23.017 回答