Specrun - задержка потоков

У меня есть тесты, написанные на c#, я использую SpecRun версии 1.5.2.

Часть моего Default.srprofile выглядит следующим образом:

<Execution stopAfterFailures="20" testThreadCount="5" testSchedulingMode="Sequential" retryFor="Failing" retryCount="3" />

Существует множество тестов, которые используют некоторые данные из базы данных, поэтому тесты сначала создают эти данные. К сожалению, когда 5 потоков работают параллельно, я иногда получаю sql deadlock error, что нормально, поскольку эти потоки пытаются записывать данные одновременно.

Есть ли возможность добавить задержку выполнения потока? Что-то сказать, чем потоки должны запускаться с интервалом в 5 секунд или что-то подобное?


person madoxdev    schedule 12.01.2017    source источник


Ответы (2)


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

Мне приходят в голову 2 варианта решения вашей проблемы:


Полное раскрытие информации: я являюсь одним из разработчиков SpecFlow и SpecFlow+.

person Andreas Willich    schedule 13.01.2017

В дополнение к предыдущему ответу, если вы пойдете с отловом взаимоблокировок и повторных попыток, я бы также добавил некоторый случайный интервал времени между попытками, чтобы вы не получали один и тот же тупик при каждой повторной итерации. Мы делаем это для одновременных запросов к API/БД, и это прекрасно работает для нас, поскольку для нескольких баз данных/сред потребуется больше ресурсов и денег.

person Vladyslav K    schedule 18.02.2021