Я не думаю, что вы действительно должны делать это таким образом, чтобы блокировать регистрацию, потому что это слишком большая работа, которую нужно сделать во время регистрации. Проверка должна быть быстрой, потому что ваши разработчики больше ничего не могут сделать, пока они работают.
Этот модульный тест должен быть скомпилирован и запущен, пока разработчик сидит и ждет его. Как вы указали, одна итерация теста недостаточно хороша для получения согласованных результатов. Сколько раз нужно было бы запустить, чтобы быть надежным? 10? Выполнение 10 итераций увеличило бы время проверки на 1 секунду и все еще не достаточно надежно, на мой взгляд. Если вы увеличите это значение до 100 итераций, вы получите лучший результат, но это прибавит 10 секунд ко времени проверки.
Кроме того, что произойдет, если два разработчика зарегистрируют код одновременно? Второй должен ждать завершения первого теста, прежде чем их запускать, или тесты будут выполняться одновременно? Первый сценарий плох, потому что второму разработчику приходится ждать вдвое дольше. Второй сценарий плох, поскольку вы, скорее всего, не пройдете оба теста.
Я думаю, что в лучшем варианте было бы запустить модульное тестирование после завершения регистрации и, в случае неудачи, сообщить кому-нибудь об этом. После каждой регистрации вы можете провести тестовый прогон, но при этом два человека могут зарегистрироваться одновременно. Я думаю, что было бы лучше запускать тест каждые N минут. Таким образом, вы сможете выследить его довольно быстро.
Вы могли бы сделать это так, чтобы он блокировал проверки, но вы должны были убедиться, что он запускается только при изменении этого объекта (или зависимости), чтобы не замедлять каждую фиксацию. Вы также должны убедиться, что тест не запускается более одного раза за раз.
Что касается конкретного теста, я не думаю, что вы можете сойтись с чем-то другим, кроме как выполнить тест через несколько итераций, чтобы получить более точный результат. Я не хотел бы полагаться на что-то меньшее, чем 5 или 10-секундный тест (то есть от 50 до 100 итераций).