Способ взять объект в окне просмотра и "Сценарий" его

У меня есть сценарий, где у меня есть довольно сложный объект, который я загружаю из базы данных.

Этот объект имеет несколько вложенных объектов. Во время отладки я нахожу экземпляр этого объекта, который хотел бы использовать в модульном тесте. Прямо сейчас я должен создать этот объект вручную. Поскольку это довольно сложно, мне нужно время.

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

Кажется, вся необходимая информация находится в окне просмотра.

Я не ожидал бы, что он будет создан с использованием операторов или чего-то подобного, просто используйте информацию о классе и создайте new операторы (вложенные столько уровней, сколько идет мой объект).

Есть ли такой инструмент там? (Если нет, может быть, я только что нашел способ сделать свое состояние?)

1 ответ

Нет такого инструмента, который я знаю... это очень сложно сделать, потому что:

  • объекты могут иметь циклические ссылки и, следовательно, не имеют ограничений по глубине, на которую вы можете перейти
  • могут быть ссылки на одноэлементные объекты
  • Могут быть ссылки на объекты, которые принимают параметр в конструкторе, как он может знать, как построить объект?
  • или ссылки на объекты, которые не имеют общедоступных конструкторов и вместо которых создаются фабрикой
  • или ссылки на COM-объекты
  • или ссылки на объекты, которые имеют смысл только во время работы: например, файловые потоки

Одно простое решение: сделать сериализуемый объект (например, xml или json), сериализовать его, скопировать сериализованную строку в ваш модульный тест, а затем десериализовать его в модульном тесте.

Не очень простое решение: реализовать визуализатор отладчика с источником объекта визуализатора: Debugger Visualizer и "Тип не помечен как сериализуемый"

Таким образом, вы можете создать окно и показать сериализованный объект... вам, вероятно, придется использовать отражение, чтобы прочитать все свойства объекта, дочерние объекты и так далее.

Другие вопросы по тегам