【问题标题】:Hide SamlMessageSignature output from gulp nunit run results从 gulp nunit 运行结果中隐藏 SamlMessageSignature 输出
【发布时间】:2018-11-09 11:34:16
【问题描述】:

当使用gulp-nunit-runnerSAMLMessageSignature 运行 NUnit 测试时,正在签名的消息会显示在控制台输出中。 noresult = true, verbose = false, trace = 'Off' 之类的选项无效。我可以将输出重定向到一个文件,但我不想这样做。 当使用nunit3-console.exe--trace=Off --noresult 选项时,没有输出,只有测试运行摘要。

有没有办法防止 SAMLMessage 被打印到控制台输出而不将整个输出重定向到文件?

示例测试:

[Test]
public void SamlMessageSignatureGenerate_SamlDocumentAndValidCert_ProducesSignedSamlMessage(
    [ValueSource(nameof(MessagesToSign))] string samlMessage,
    [ValueSource(nameof(Certs))] X509Certificate2 cert,
    [ValueSource(nameof(SupportedSignatureMethods))] string signatureMethod,
    [ValueSource(nameof(SupportedDigestMethods))] string digestMethod)
{
    XmlElement samlDoc = SamlLoader.LoadXmlFromString(samlMessage).DocumentElement;
    string inclusiveNamespacesPrefixList = null;
    SAMLMessageSignature.Generate(samlDoc, cert.PrivateKey, cert, inclusiveNamespacesPrefixList, digestMethod, signatureMethod);
    SAMLMessageSignature.IsSigned(samlDoc).Should().BeTrue();
}

由于某种原因,samlMessage 最终出现在控制台输出中。

【问题讨论】:

    标签: c# .net gulp nunit saml-2.0


    【解决方案1】:

    --result--noresult--trace 选项与控制台输出没有任何关系,但有其他用途。

    --verbose 选项可用于为由 NUnit 生成的某些(仅某些)消息提供额外的详细信息。

    可以使用--out 选项将控制台输出重定向到文件,这会影响测试发送到控制台的所有输出。最有可能的是,您的 SAML 输出对 NUnit 来说似乎是由测试生成的。

    在这种情况下,如果您希望抑制特定测试生成的输出,有两种选择:

    1. 使用一些设置(如果存在),以便永远不会生成输出。我不知道你的情况是否可行。

    2. 为您的测试重定向控制台输出,自己捕获它,然后在测试结束时恢复它。

    如果你想做(2),那么你必须记住控制台是由整个进程共享的。因此,您的测试绝不能与其他测试并行运行。如果您正在并行运行一些测试,则将该测试标记为[NonParallelizable]

    要重定向控制台,请创建一个 StringWriter 并在测试期间将 Console.Out 设置为它。如果您愿意,您可以在测试中检查所写的内容。

    如果特定夹具中的所有测试都需要抑制控制台输出,那么您可以通过[SetUp][OneTimeSetUp] 方法来实现。否则,请在每个单独的测试中执行此操作,可能通过 using 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多