Плагин Eclipse для автоматического создания кода Java для воспроизведения состояния объекта для быстрого тестирования во время отладки

#java #eclipse #debugging #eclipse-plugin #code-generation

#java #затмение #отладка #eclipse-плагин #генерация кода #eclipse

Вопрос:

Я ищу плагин для Eclipse для создания кода Java, такого как:

 Person person = new Person();
person.setName("name");

List<Address> addresses = new ArrayList<Address>();
Address address = new Address("Address");
addresses.add(address);
person.setAddresses(addresses);
  

, из объекта во время отладки.

Контекст заключается в том, что я хочу определить некоторые тесты для проверки конвертеров, и поскольку я получаю эти довольно сложные объекты (со списками списков объектов …) для преобразования из WS, я бы предпочел получать Java-код автоматически при установке точки останова и указании объекта, который я хочу обработать.

Большое спасибо!!

Комментарии:

1. Я не думаю, что вы найдете его, поскольку существует несколько способов генерации объектов (передаете ли вы параметры в конструкторе, установщики / геттеры или даже другие методы?)

2. Но это может быть сделано с помощью отражения, вызывающего конструктор по умолчанию, а затем установщики (предположим, вы имеете дело с Java-компонентами)

Ответ №1:

Добавляю комментарий в качестве ответа, так как он довольно длинный.

Да, можно создать плагин, как вы упомянули, но чистые javabeans — это довольно неприятный запах в OO, поэтому решение будет применяться только к небольшому набору разработчиков (и это, возможно, одна из причин, почему нет плагина, который делает это).

С этим (как вы упомянули) возникает еще больше проблем, если дерево объектов является сложным. Где плагин прекращает генерировать данные? Другая проблема заключается в том, что тесты не будут поддерживаться, представьте сценарий, в котором вы вносите небольшое изменение в один из своих javabeans, а затем вам нужно переписать N тестов, чтобы справиться с новым свойством, хотя тесты не имеют ничего общего с этим свойством (это плохой тестовый запах)

Если вы хотите построить тестовые данные, проверьте шаблон построения тестовых данных (TDB). Это хороший подход, когда вы можете использовать большинство значений по умолчанию, и вам нужно изменить только несколько конкретных значений. Он также довольно удобен в обслуживании и очень читаем.

Комментарии:

1. Я не согласен с «это плохой тестовый запах». Представьте, что у вас есть клиент WS, которому необходимо протестировать метод, извлекающий некоторые данные из WS. В будущем это может измениться (добавление / удаление некоторых полей, изменение структуры …), Поэтому вы должны убедиться, что ваш клиент все еще будет работать.

2. Также продолжаю говорить, что это может быть сделано с помощью отражения. Просматривая поля объекта, идентифицируя набор известных типов (String, HashMap … чтобы мы знали, какой код генерировать) и для неизвестных, попробуйте некоторую стратегию по умолчанию (вызов конструктора по умолчанию, а затем установщиков) и из этого генерируя правильный код. Я уверен, что мы столкнулись бы с проблемами, но, как я уже сказал, он будет сосредоточен на Java Beans, а также его можно было бы настроить, добавив сопоставления между типами и правильный код для имитации объекта.