Где я должен поместить тест-код для фрагмента плагина Eclipse?
Есть несколько сообщений, которые я нашел, когда искал лучшую практику, где разместить тестовый код для плагина Eclipse. Большинство из них предлагают подобные фрагменты
У меня есть плагин с одним источником, и у него есть два фрагмента, один для RCP и один для RAP.
Теперь, если я создаю другой фрагмент для тестирования, я не могу получить доступ к API фрагмента RCP из тестового фрагмента.
Есть заголовок Eclipse-ExtensibleAPI
, если установлено значение true, плагин хоста сделает доступными его API-интерфейсы для фрагментов. Но он доступен для других плагинов, которые в этом нуждаются, а не для своего собственного фрагмента (тестового фрагмента).
Может кто-нибудь, пожалуйста, помогите мне в этом?
1 ответ
Эта проблема является следствием соглашения Eclipse о размещении тестов в отдельных проектах. Цель этого разделения состоит в том, чтобы исключить тестовые зависимости, такие как JUnit, макеты и т. Д., Из основного проекта. Однако это обоснование основано на предположениях, которые становятся все более и более устаревшими. Если вы не используете ни сборку PDE, ни тесты плагинов, вы можете рассмотреть вопрос о переносе тестов в тот же проект, который содержит исходный код.
Я считаю, что модульные тесты относятся к исходному коду проекта и не должны разделяться. Каждый, кто проверяет исходный код, также должен иметь тесты.
Сборка PDE
Проекты плагинов Eclipse раньше создавались с помощью сборки PDE, которая считывает зависимости из файла Manifest и не может различить области тестирования и области компиляции. Хотя сборка PDE все еще используется внутри IDE для экспорта, она была заменена на tycho в большинстве проектов Eclipse, включая саму платформу. Tycho основан на Maven, который допускает зависимости в тестовой области, которые не попадают в встроенный артефакт.
Если вы перенесете тесты в основной проект, вы можете добавить тестовые зависимости в путь сборки проекта или посмотреть, сможете ли вы использовать m2e для управления зависимостями.
Тесты плагинов
Еще одно предположение, которое привело к разделению тестов, заключалось в том, что все тесты выполняются в виде так называемых подключаемых тестов. Для подключаемых тестов требуется работающая среда OSGi, их можно считать более интеграционными, чем модульными. Эти тесты не должны требовать доступа к внутренним частям фрагмента, но должны проверять функциональность пакета узла с любым фрагментом, доступным в среде.
Простые модульные тесты не должны требовать среды OSGi, поэтому они все равно используют один и тот же загрузчик классов и, следовательно, не должны храниться фрагментарно. Если вы собираете с Tycho, вы должны использовать maven-surefire вместо tycho-surefire, так как последний выполняет тесты как тесты плагинов.