MSTest: блокировка теста, пока другой тест не кеширует данные - PullRequest
0 голосов
/ 06 декабря 2018

Я пишу юнит-тесты для клиента Api.Один тест, ListAll(), загружает все записи из API для данной учетной записи, а другой, Get(), загружает определенный заказ.

Get() требует уникальный идентификатор записи, поэтому яхотел бы кэшировать записи, полученные от ListAll(), и использовать одну из них для теста Get() вместо вызова ListAll() внутри теста Get().

Я прочитал о понятииупорядоченные тесты, но я бы предпочел решение, не учитывающее порядок их выполнения.В идеале, он будет блокировать тест Get() до тех пор, пока записи не будут кэшированы, или, если тест выполняется по отдельности, тогда перед продолжением прибегнет к перечислению всех записей.Я рассмотрел использование частного Lazy<Entries> поля в тестовом классе для достижения этой цели, но пока этот подход не представляется жизнеспособным.

1 Ответ

0 голосов
/ 06 декабря 2018

Обычно рекомендуется, чтобы ваши тесты были независимы друг от друга.

Однако, если вам нужно обмениваться данными между тестами по соображениям скорости, у вас может быть функция LoadDataIfNeeded (), которую вызывают оба теста.При первом запуске LoadDataIfNeeded () он загружает данные, помещает данные в статический член и возвращает его;во второй раз он просто возвращает уже загруженные данные из статического члена.Если вы хотите, чтобы ваши тесты работали правильно в любом порядке, убедитесь, что ни один из ваших тестов не мешает друг другу, изменив общие данные после их загрузки.

...