繁体   English   中英

从gulp nunit运行结果中隐藏SamlMessageSignature输出

[英]Hide SamlMessageSignature output from gulp nunit run results

当使用gulp-nunit-runner运行NUnit测试以对正在签名的SAMLMessageSignature消息进行显示时,将显示在控制台输出中。 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最终出现在控制台输出中。

选项--result--noresult--trace都毫无关系与控制台输出,但用于其他目的。

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

可以使用--out选项将控制台输出重定向到文件,这会影响测试发送到控制台的所有输出。 您的SAML输出很可能在NUnit中显示,就像它是由测试生成的一样。

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

  1. 使用某些设置(如果存在),以使永远不会生成输出。 我不知道您是否可以这样做。

  2. 重定向测试的控制台输出,自己捕获它,然后在测试结束时将其还原。

如果要执行(2),则必须记住控制台是整个过程共享的。 因此,您的测试绝不能与其他测试并行运行。 如果要并行运行某些测试,则将该测试标记为[NonParallelizable]

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

如果特定固定装置中的所有测试都需要抑制控制台输出,则可以使用[SetUp][OneTimeSetUp]方法进行。 否则,可以在每个单独的测试中执行此操作,可能需要通过using语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM