这是我的单元测试之一:
[<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
但这不存在。
我是否必须为模拟器创建一个新进程并以此方式“捕获”输出?或者可以将流传递给模拟器(或从模拟器返回)?
答案 0 :(得分:0)
NCrunch并没有做任何我想不到的魔术,我相信它只会注册一个跟踪侦听器,并在测试运行时输出跟踪流中出现的消息。
我没有F#专家,但在C#中我们只使用Trace.WriteLine
方法,NCrunch会显示你放在那里的任何东西。我认为你应该可以在F#中使用相同的类