[英]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中显示,就像它是由测试生成的一样。
在这种情况下,如果您希望抑制特定测试生成的输出,则有两种选择:
使用某些设置(如果存在),以使永远不会生成输出。 我不知道您是否可以这样做。
重定向测试的控制台输出,自己捕获它,然后在测试结束时将其还原。
如果要执行(2),则必须记住控制台是整个过程共享的。 因此,您的测试绝不能与其他测试并行运行。 如果要并行运行某些测试,则将该测试标记为[NonParallelizable]
。
要重定向控制台,请创建一个StringWriter
并在测试期间将Console.Out
设置为该控制台。 如果您愿意,可以检查在测试中编写的内容。
如果特定固定装置中的所有测试都需要抑制控制台输出,则可以使用[SetUp]
或[OneTimeSetUp]
方法进行。 否则,可以在每个单独的测试中执行此操作,可能需要通过using
语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.