簡體   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