Не уверен, что вы слышали о NDepend , но этот инструмент позволяет вам «анализировать» исходный код и скомпилированные сборки и выполнять все виды магии, включая проверку зависимостей и многое другое.
Одной из таких проверок является проверка на неизменность. Например, у меня есть маркерный интерфейс IImmutable
, и NDepend дает сбой моей сборки, если какой-либо тип имеет этот интерфейс, но является изменяемым, используя следующий запрос:
WARN IF Count > 0 IN SELECT TYPES WHERE
Implement "MyCompany.MyAssemblies.Dto.IImmutable" AND
!IsImmutable
Вы также можете настроить его для создания отчетов о нарушениях, а также неудачных сборок.
Очевидно, что это на самом деле не модульный тест. Тем не менее, он может быть интегрирован как часть вашей сборки и проваливать вашу сборку так же, как и модульный тест, поэтому я подумал, что упомяну это!
См. здесь для получения дополнительной информации о том, что он на самом деле делает и как.