Resharper通过过滤掉所有非字母数字字符来压缩单元测试标准输出/控制台输出。
Console.WriteLine("some text");
Console.WriteLine("more");
-> "sometextmore"
如何阻止这种情况发生?是否有选项设置?
重要:这似乎是Resharper + F#唯一的问题。 C#按预期工作。我认为这很公平,因为Resharper是一个C#工具。但是,如果Resharper可以无缝地作为F#和C#的测试运行员,这将是一个受欢迎的功能。
答案 0 :(得分:1)
我不确定会导致这样的问题。出于完全随意的好奇心,如果你为你的白色空间试过“”或“%20”会发生什么?我不知道你可以对换行怎么办,也许可以尝试在字符串中放一个实际的“\ n”。
答案 1 :(得分:1)
在F#printfn样式中简单包装C#控制台行为。
NB。 printfn“no format”重载不适合这种解决方法。
如果出现另一个答案,我会将问题提交给最佳答案。
// .fs code
// --------
namespace Play
open PlayCS
open System
open NUnit.Framework
module printHelper =
let printfn (fmt: Format<_,_,_,_>) x = ConsoleHack.WriteLine <| sprintf fmt x
open printHelper
[<TestFixture>]
type printPatterns2() =
[<Test>]
member __.testHelper() =
printfn "%s" "our overloaded printfn"
printfn "%s" "now does"
printfn "%s" "what"
printfn "%s" "it is supposed to"
printfn "%s" "in the F#/Resharper/nunit context"
[<Test>]
member __.testHackWriteLine() =
ConsoleHack.WriteLine(sprintf "%s" "abc")
ConsoleHack.WriteLine(sprintf "%s" "abc")
// .cs code
// --------
using System;
namespace PlayCS
{
public class ConsoleHack
{
public static void WriteLine(string s)
{
Console.WriteLine(s);
}
}
}
改进要求: