Скрыть результаты SamlMessageSignature из результатов прогона gulp nunit - PullRequest
0 голосов
/ 09 ноября 2018

При использовании 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 заканчивается выводом на консоль.

1 Ответ

0 голосов
/ 09 ноября 2018

Опции --result, --noresult, --trace не имеют никакого отношения к выводу консоли, но служат другим целям.

Опция --verbose может использоваться для предоставления дополнительной информации для некоторых (только некоторых) сообщений , генерируемых NUnit .

Вывод на консоль можно перенаправить в файл с помощью параметра --out, который влияет на весь вывод, отправляемый на консоль с помощью теста. Скорее всего, ваш вывод SAML выглядит как NUnit, как если бы он был сгенерирован тестом.

В этом случае, если вы хотите подавить вывод, сгенерированный определенным тестом, есть две опции:

  1. Используйте некоторые настройки, если они существуют, чтобы вывод никогда не генерировался. Я не знаю, возможно ли это в вашем случае.

  2. Перенаправьте консольный вывод для вашего теста, захватывая его самостоятельно, а затем восстановите его в конце теста.

Если вы хотите сделать (2), вы должны помнить, что консоль является общей для всего процесса. Поэтому ваш тест никогда не должен выполняться параллельно с другими тестами. Если вы выполняете несколько тестов параллельно, пометьте их как [NonParallelizable].

Чтобы перенаправить консоль, создайте StringWriter и задайте для нее Console.Out на время теста. При желании вы можете проверить, что написано как часть вашего теста.

Если все тесты в конкретном приборе требуют подавления вывода на консоль, то вы можете сделать это либо методом [SetUp], либо [OneTimeSetUp]. В противном случае, делайте это в каждом отдельном тесте, возможно, с помощью оператора using.

...