Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从gulp nunit运行结果隐藏SamlMessageSignature输出_C#_.net_Gulp_Nunit_Saml 2.0 - Fatal编程技术网

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

C# 从gulp nunit运行结果隐藏SamlMessageSignature输出,c#,.net,gulp,nunit,saml-2.0,C#,.net,Gulp,Nunit,Saml 2.0,当使用gulp nunit runner为SAMLMessageSignature运行nunit测试时,正在签名的消息将显示在控制台输出中。像noresult=true、verbose=false、trace='Off'这样的选项没有效果。我可以将输出重定向到一个文件,但我不想这样做。 使用带有--trace=Off--noresult选项的nunit3 console.exe时,没有输出,只有测试运行摘要 有没有一种方法可以防止SAMLMessage在不将整个输出重定向到文件的情况下打印到控制

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

有没有一种方法可以防止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输出看起来像是由测试生成的

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

  • 如果存在某些设置,请使用这些设置,以便永远不会生成输出。我不知道这在你的情况下是否可行

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

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

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

    如果特定夹具中的所有测试都需要抑制控制台输出,那么您可以通过
    [SetUp]
    [OneTimeSetUp]
    方法进行。否则,可以在每个单独的测试中使用语句进行测试