如何阻止空格,\ n从单元测试会话输出中剥离?

时间:2013-12-05 06:05:20

标签: f# resharper

Resharper通过过滤掉所有非字母数字字符来压缩单元测试标准输出/控制台输出。

Console.WriteLine("some text");
Console.WriteLine("more"); 

-> "sometextmore"

如何阻止这种情况发生?是否有选项设置?

重要:这似乎是Resharper + F#唯一的问题。 C#按预期工作。我认为这很公平,因为Resharper是一个C#工具。但是,如果Resharper可以无缝地作为F#和C#的测试运行员,这将是一个受欢迎的功能。

2 个答案:

答案 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);
            }
        }
    }

改进要求:

  • 是否可以将其加载到顶级域名?