在控制台输出中显示了使用gulp-nunit-runner
对正在签名的SAMLMessageSignature
消息运行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
最终出现在控制台输出中。
答案 0 :(得分:1)
选项--result
,--noresult
,--trace
与控制台输出无关,但有其他用途。
选项--verbose
可用于为NUnit生成的某些消息(仅某些)提供更多详细信息。
可以使用--out
选项将控制台输出重定向到文件,这会影响测试发送到控制台的所有输出。您的SAML输出很可能在NUnit中显示,就像它是由测试生成的一样。
在这种情况下,您希望抑制由特定测试生成的输出,有两种选择:
使用某些设置(如果存在),以便永远不会生成输出。我不知道您是否可以这样做。
重定向测试的控制台输出,自己捕获它,然后在测试结束时将其还原。
如果要执行(2),则必须记住控制台是整个过程共享的。因此,您的测试绝不能与其他测试并行运行。如果要并行运行某些测试,则将其标记为[NonParallelizable]
。
要重定向控制台,请在测试过程中创建一个StringWriter
并将其设置为Console.Out
。如果您愿意,可以检查在测试中编写的内容。
如果特定固定装置中的所有测试都需要抑制控制台输出,则可以使用[SetUp]
或[OneTimeSetUp]
方法进行。否则,可以在每个单独的测试中执行此操作,可能要通过using
语句来完成。