Скажем, у меня есть сложный класс .NET с множеством массивов и другими членами класса. Я должен иметь возможность генерировать глубокий клон этого объекта, поэтому я пишу метод Clone() и реализую его с помощью простого BinaryFormatter serialize/deserialize - или, возможно, я делаю глубокий клон, используя другую технику, которая более подвержена ошибкам и я бы хотел убедиться, что это проверено.
ОК, так что теперь (нормально, я должен был сделать это сначала). Мне бы хотелось написать тесты, которые охватывают клонирование. Все члены класса являются частными, и моя архитектура настолько хороша (!), Что мне не нужно было писать сотни публичных свойств или других аксессуаров. Класс не является IComparable или IEquatable, потому что это не требуется приложению. Мои модульные тесты находятся в отдельной сборке с производственным кодом.
Какие подходы люди прибегают к тестированию, что клонированный объект является хорошей копией? Вы пишете (или переписываете, как только обнаруживаете потребность в клоне) все ваши модульные тесты для класса, чтобы их можно было вызвать с помощью "девственного" объекта или с помощью клона? Как бы вы протестировали, если часть клонирования была недостаточно глубокой - так как это только проблема, которая может дать отвратительные ошибки? "