Как повторить тест в xUnit на основе определенного типа исключения

#c# #xunit #xunit.net

#c# #xunit #xunit.net

Вопрос:

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

Что-то вроде

 [Fact]
[Retry(3, typeof(ArgumentException)] 
  

Есть ли какой-либо способ архивировать это поведение в xUnit?

Комментарии:

1. Почему вы хотите повторить его?

2. Из-за нестабильной среды @Progman

3. @user1316502 Ознакомьтесь с рекомендациями по написанию модульных тестов . Попробуйте воспроизвести ваши нестабильные переменные среды в согласованных помещениях.

4. @AlyEl-Хаддад этот вопрос не касается модульных тестов. Проблема заключается в интеграции

5. Если вы искренне верите, что большой набор тестов может избежать ошибочных тестов, то вы не провели большого тестирования: testing.googleblog.com/2016/05/… Google говорит, что у них 1,5%-ная частота сбоев при хороших тестах.

Ответ №1:

Взгляните на xunit-retry, который, вероятно, устарел, но был создан с учетом той же проблемы. Хотя он не поддерживает повторную попытку для конкретного исключения, он проверяет, были ли исключения в строке 44 здесь: https://github.com/giggio/xunit-retry/blob/master/XUnitRetry/RetryTestCase.cs Вызов aggregator.toException либо выдаст вам исключение, если оно только одно, либо вернет AggregateException, а затем вы можете проверить, соответствуют ли агрегированные исключения списку тех, которые вы хотели бы повторитьтест

Комментарии:

1. Какой-то молодец воскресил это: github.com/JoshKeegan/xRetry (жизнь, должно быть, довольно скучная в Милтон-Кинсе).