#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, а также его можно было бы настроить, добавив сопоставления между типами и правильный код для имитации объекта.