Я бы не делал это через юнит-тесты - это не то место.Сделайте это в build / test-script.Вы получаете больше гибкости и можете делать больше вещей, которые могут понадобиться.
Грубый набросок будет выглядеть так:
- build
- запуск юнит-тестов
- запуск интеграционных тестов
- запуск тестов производительности
- загрузка результатов тестирования в хранилище результатов (коммерческий продукт, например, "PowerBI")
- проверка текущих результатов с предыдущими результатами
- загрузка артефактов / развертывание пакетов
В 6. если есть регрессия, вы можете позволить сборке завершиться неудачей с ненулевым кодом выхода.
BenchmarkDotNet может экспортировать результаты в виде JSON,и т.д., так что вы можете воспользоваться этим.
Суть в том, как определить, произошла ли регрессия.Особенно в сборках CI (с контейнерами и тому подобным) может быть разное оборудование на разных тестах, поэтому результаты не сопоставимы 1: 1, и вы должны это учитывать.
Лично я непусть сценарий завершится ошибкой в случае возможной регрессии, но он отправляет информацию об этом, поэтому я могу вручную проверить, является ли это истинной регрессией или просто причиной, вызванной другим оборудованием.
Регрессия просто обнаруживается, если текущаярезультаты хуже, чем медиана последних 5 результатов.Конечно, это грубый, но эффективный метод, и вы можете настроить его под свои нужды.