Как я генерирую исходный код для создания объекта, который я отлаживаю?

Типичный сценарий для меня:

  1. Унаследованный код я продолжаю работать, имеет ошибку, которую имеет только клиент в производстве
  2. Я присоединяю отладчик и выясняю, как воспроизвести проблему об их системе, учитывая их вход. Но, я не знаю, почему ошибка происходит все же.
  3. Теперь я хочу записать, что автоматизированный тест в моей локальной системе, чтобы попытаться воспроизвести затем исправляет ошибку

Тот последний шаг действительно тверд. Вход может быть очень сложным и иметь много данных к нему. Создание входа вручную (например: P p = new P(); p.setX("x"); p.setY("x"); предположите делать, это 1000 раз для создания объекта) очень утомительно и подвержен ошибкам. На самом деле можно заметить, что существует опечатка в примере, который я просто дал.

Существует ли автоматизированный способ взять поле от точки останова в моем отладчике и генерировать исходный код, который создал бы тот объект, заполнил тот же путь?

Единственная вещь, которую я придумал, состоит в том, чтобы сериализировать этот вход (использующий Xstream, например). Я могу сохранить это в файл и читать, он въезжает задним ходом в автоматизированном тесте. Это имеет основную проблему: Если класс изменяется определенными способами (например: полевой/метод считывания/метод set название переименовано), я не смогу десериализовать объект больше. Другими словами, тесты чрезвычайно хрупки.

8
задан Daniel Kaplan 12 January 2013 в 21:51
поделиться