Eclipse buildp и runtime classpath для легкого выполнения тестовых случаев junit - PullRequest
3 голосов
/ 26 марта 2010

У меня большой проект затмения с несколькими классами junit. Я пытаюсь найти баланс между добавлением ресурсов времени выполнения к пути к классам проекта eclipse и необходимостью настройки нескольких конфигураций запуска junit.

Я понимаю, что путь к классу сборки eclipse по умолчанию наследуется всеми конфигурациями модульных тестов, но некоторые из моих тестов требуют дополнительных ресурсов времени выполнения. Я мог бы добавить эти ресурсы в путь к классам сборки, но это замедляет общее время сборки проекта (так как это должно держать больше файлов в синхронизации). Мне не нравится идея включения * ресурсов и jars в путь к классам во время выполнения.

У меня есть два варианта: положительные и отрицательные, как я вижу, перечислены

1: Добавить все ресурсы времени выполнения в затмение classpath.

  • POS Я могу выбрать модульный тест и запустить его без настройки пути к классам теста.
  • POS Дополнительные ресурсы на пути к классам сборки означают, что затмение замедляется.
  • NEG Сложнее убедиться, что каждый тест использует правильные ресурсы.

2: настройка пути к классам для каждого модульного теста

  • POS Я точно знаю, какие ресурсы используются тестом.
  • POS Меньший путь к классу сборки означает более быструю сборку и выполнение Eclipse.
  • NEG Трудно настроить несколько отдельных путей классов Junit Runtime.

В идеале я хотел бы настроить одну базовую конфигурацию среды выполнения junit, которая принимает стандартный путь к классу сборки eclipse, добавляет дополнительные файлы времени выполнения и ресурсы. Затем эту конфигурацию можно повторно использовать в конкретных тестовых случаях junit. Возможно ли что-нибудь подобное?

Просмотр конкретной конфигурации запуска junit, которую можно экспортировать в файл общего проекта

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.junit.launchconfig">
<stringAttribute key="bad_container_name" value="/CR-3089_5_1_branch."/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/CR-3089_5_1_branch/src/com/x/y/z/ParserJUnitTest.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit4"/>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="com.x.y.z.ParserJUnitTest"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="CR-3089_5_1_branch"/>
</launchConfiguration>

возможно ли расширить / повторно использовать эту конфигурацию и параметризировать значение 'org.eclipse.jdt.launching.MAIN_TYPE'?

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

В основном - Какой самый простой способ отделить и поддерживать пути к классам во время сборки eclipse и от классов времени выполнения junit?

1 Ответ

1 голос
/ 26 марта 2010

Первое решение может состоять в том, чтобы полностью отделить проект от его модульных тестов:

  • один проект для текущей сборки
  • один проект для тестов JUnit (или несколько, если задействован другой тип пути к классам): у этого проекта будет первый проект dev в его зависимостях, и ему не нужно будет указывать путь к классам из этой разработки.

Более чистым способом (поскольку он будет использоваться в Eclipse, но также и вне Eclipse) было бы преобразование вашего проекта в maven, например, через m2eclipse .
Таким образом, maven может управлять композициями зависимостей нескольких проектов, чтобы иметь правильный путь к классу для тестового задания.

...