更改控制台输出流后,在NCrunch测试中显示输出

时间:2015-06-27 23:42:26

标签: .net f# console ncrunch

这是我的单元测试之一:

[<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

但这不存在。

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

1 个答案:

答案 0 :(得分:0)

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

我没有F#专家,但在C#中我们只使用Trace.WriteLine方法,NCrunch会显示你放在那里的任何东西。我认为你应该可以在F#中使用相同的类