Автоматизация модульных тестов (junit) для Разработки плагинов Eclipse

Это отличный вопрос, но я не уверен, что StackOverflow - это то место, где его можно задать, так как нет четкого ответа. Тем не менее, я пытаюсь дать ему шанс.

Django также следует шаблону проектирования MVC, но наименование немного отличается.

  • Модели Django -> Модели MVC
  • Представления Django -> Контроллеры MVC
  • Шаблоны Django -> Представления MVC

Это часто упоминается как MTV вместо MVC. Но это не конец истории, потому что многие люди считают плохой идеей помещать слишком много бизнес-логики в представления по таким причинам, как тестируемость и возможность повторного использования. Существует два распространенных подхода к этой проблеме:

  • толстые модели: вы помещаете всю свою бизнес-логику в сервисы моделей
  • : у вас есть отдельные модули, содержащие методы / классы для вашей бизнес-логики

Лично я работал с обоими, и у меня был лучший опыт с сервисным подходом.

Эквивалентом DAO в Django, вероятно, является Django ORM. Обратите внимание, что это действительно только уровень абстракции для поддерживаемых реляционных баз данных. Если вы хотите использовать другой источник данных, такой как NoSQL DB или REST API, вы должны свернуть свое собственное решение или искать сторонние пакеты.

Java может иметь только один открытый класс на файл, и они должны иметь одинаковые имена. В Python такого ограничения нет, поэтому рекомендуется использовать несколько классов на файл (файлы .py называются модулями). Если модуль / файл становится слишком большим, вы можете превратить его в пакет (каталог с файлом __init__.py), содержащий несколько модулей (и / или подпакетов).

Различия между приложением и проектом могут сбивать с толку, поэтому я написал целую статью о схеме именования Django . Приложение Django представляет собой пакет Python, но обычно они организованы по доменам. Например. в системе управления библиотекой ваш проект library может иметь приложение catalogue для управления запасами и приложение checkout для управления процессом извлечения книг.

И наконец, если вы специально нацелены на создание REST API, я настоятельно рекомендую вам взглянуть на Django REST Framework .

16
задан Community 23 May 2017 в 12:17
поделиться

6 ответов

Я только что получил JUnit, тестирующий работающий частью бездисплейной сборки для нашего приложения RCP.

Я нашел эту статью - Автоматизация Eclipse Модульные тесты PDE с помощью Муравья, невероятно полезного. Это предоставляет код и подход для запущения Вас. Однако много вещей, которые я обнаружил:

О коде статьи

  • был только один пакет под тестами (мы выделили наш процесс сборки из кода, с помощью Buckminster),
  • был только один тестовый класс.
  • они были оба эффективно hardcoded в сценарий сборки

О Eclipse PDE

  • uitestapplication требует другого testApplication. Используя coretestapplication не делает.
  • поскольку эти приложения находятся оба в пакетах, которые имеют зависимости от SWT. Это - уничтожитель соглашения при большинстве обстоятельств, хотя не, если Ваша машина сборки является полем Windows. Я хотел бы видеть, что они разделяют на пакеты неUI.

Я нашел, что предоставленный код был хорошей начальной точкой, но имел много выше предположений, неявных в их реализации.

Обнаруживание этих предположений, делая работу было относительно прямым.

Наша новая и солнечная установка

  • buckminster создает пакеты.
  • будьте нацелены копирует пакеты с целевой платформы, org.eclipse.pde.runtime и org.eclipse.jdt.junit в "установку затмения тестера". Это должно заботиться о Вашем Java Result 13 проблема.
  • найдите тестовые фрагменты от рассмотрения рабочей области
  • найдите хост фрагмента от рассмотрения декларации
  • найдите тестовые классы от рассмотрения проекта в рабочей области.
  • регистр a PDETestListener измененный для обработки нескольких тестовых классов
  • вызовите установку затмения тестера с несколькими тестовыми классами.

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

12
ответ дан 30 November 2019 в 22:50
поделиться

Вот Инструмент, которым я могу повторно управлять, является ли кто-то межотдохнувшим TDD: Infinitest

Краткое описание извлекло из сайта Infinitest:

Что такое Infinitest?

Infinitest является непрерывным исполнителем тестов, разработанным для упрощения Разработки через тестирование. Infinitest помогает Вам изучить TDD путем обеспечения обратной связи, как Вы работаете, и помогает Вам основной TDD путем сокращения цикла обратной связи от минут до простых секунд.

Каждый раз, когда Вы изменяете класс, Infinitest запускает Ваши тесты для Вас. Это умно о том, какие тесты работать, и только запускает тех, Вам нужно. Если какие-либо ошибки происходят, это сообщает о них ясно и кратко. Это дает Вам мгновенную обратную связь о семантической правильности Вашего кода, как современный IDE дает Вам мгновенную обратную связь о синтаксических ошибках.

-1
ответ дан 30 November 2019 в 22:50
поделиться

Мы используем сценарии сборки PDE (см. этот вопрос), и мы экспортируем файлы типа "build" муравья для наших плагинов модульного теста. Эти сценарии сборки муравья затем вызываются из сценариев сборки PDE (customTargets.xml) с помощью задачи Ant "муравья". К сожалению, это только работает с JUnit3. Там, как предполагается, JUnit4-адаптер для JUnit3, таким образом, можно запустить тесты JUnit4 из исполнителя тестов JUnit3.

Мы, вероятно, переместимся во что-то как Знаток; сценарии сборки PDE действительно не отключаются для того, что мы должны сделать с ними.

0
ответ дан 30 November 2019 в 22:50
поделиться

Используйте Муравья и CruiseControl - Вы называете модульные тесты в скрипте Ant, а также остальной части Вашей логики сборки и можете выполнить их с каждым повторением сборки - затем, CruiseControl может автоматизировать Ваши вызовы сборки и запустить эти тесты каждый раз.

-1
ответ дан 30 November 2019 в 22:50
поделиться

Глядя на ваше исключение, вы видите, что приложение coretest отсутствует. Целевой объект ant можно найти в plugins / org.eclipse.test_3.1.0 / library.xml: 10

На самом деле это проблема зависимости. Eclipse должен иметь все плагины для сборки.

Для правильной настройки необходимо просмотреть 2 файла.

  1. Файл продукта
  2. Файл feature.xml

Продукт

Убедитесь, что файл продукта содержит все необходимые плагины.

После этого добавьте функции org.eclipse.rcp и org.eclipse.test

... плагины выше ...

<features>
      <feature id="mock_feature" version="1.0.0"/>
      <feature id="mock_feature_test" version="1.0.0"/>
      <feature id="org.eclipse.rcp" version="3.2.0.v20060609m-SVDNgVrNoh-MeGG"/>
      <feature id="org.eclipse.test" version="3.2.0.v20060220------0842282442"/>
 </features>

Вам нужен org.eclipse.test для запуска тестов и org.eclipse.rcp для запуска eclipse для запуска тестов.

Не забудьте установить для useFeatures значение 'true'

<product name="mock" id="com.example.mock" application="com.example.mock.application" useFeatures="true">

feature.xml

Предполагая, что у вас есть функция для тестирования, вы должны добавить 2 дополнительных плагина.

... другие плагины выше ...

<plugin
         id="org.apache.ant"
         download-size="0"
         install-size="0"
         version="0.0.0"/>

   <plugin
         id="org.eclipse.core.runtime.compatibility"
         download-size="0"
         install-size="0"
         version="0.0.0"
         unpack="false"/>

Этим тестам нужен org.apache.ant для запуска тестов и org.eclipse.core.runtime.compatibility для запуска.

Еще одна проблема

Убедитесь, что в вашем целевом затмении (копия eclipse который вы используете для построения против), есть только 1 копия каждого плагина. Например, если в папке плагинов есть 2 версии плагинов com.ibm.icu, eclipse будет использовать более новую. Поскольку плагин сборки pde настроен на использование определенной версии, eclipse будет жаловаться, что не может найти конкретный плагин, даже если он там есть.

Некоторые мысли

Весь процесс создания eclipse мог бы быть намного лучше. На самом деле я получил этот процесс в основном методом проб и ошибок. Документация устарела и немногочисленна. Сообщения об ошибках не помогают. Это только оставляет чувство беспомощности и разочарования. Позволять'

2
ответ дан 30 November 2019 в 22:50
поделиться

В качестве альтернативы Ant у меня есть хороший опыт использования совершенно нового Maven + Tycho с Hudson. Tycho обеспечивает полную поддержку разработки Osgi и Eclipse на Maven. В настоящее время он интенсивно разрабатывается, но большинство необходимых мне функций работают. С вашей стороны требуется очень небольшая настройка, поскольку он может анализировать файлы MANIFEST.MF.

Если у вас есть некоторый опыт работы с Maven, начать с ним работать несложно. Hudson немного более проблематичен из-за отсутствия поддержки Maven 3. (разрабатываемая версия Maven 3 используется Tycho)

Ссылки для начала:

0
ответ дан 30 November 2019 в 22:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: