Подтвердить что ты не робот

Записи класса Eclipse, используемые только для тестов

В Maven у вас могут быть зависимости времени и времени выполнения компиляции. Это особенность, которую я люблю, и плагин M2Eclipse делает это доступным в Eclipse, и это здорово. Поэтому, если я добавлю jmock.jar в свой проект как тестовую зависимость, он будет отображаться на пути к классам для тестов JUnit, но не будет присутствовать, когда я отлажу сам приложение.

Это именно то, чего я хотел бы достичь сейчас, но без M2Eclipse или Maven. Есть ли способ сделать это в простом Eclipse? (Возможно, без установки плагинов.)

4b9b3361

Ответ 1

Я боюсь, что ответ заключается в том, что вы не можете. Есть 2 открытых вопроса, которые были отложены из 3.5, связанные с вашей проблемой:

Ответ 2

Вы можете разделить все свои тесты на другой проект и добавить основной проект в качестве зависимости (Проект- > Свойства Путь сборки Java Проекты Добавить...)

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

Создайте тестовый проект как обычно, теперь вам нужно создать связанный ресурс, чтобы открыть папку src/test/java. Лучше всего создать его с помощью переменной, чтобы ваши проекты могли сохранять определенную независимость от платформы. Чтобы создать новую связанную папку, выберите Создать Папка, введите src в поле имя папки:, затем нажмите Дополнительно →

Нажмите Ссылка на папку в файловой системе. Нажмите Переменные..., чтобы открыть диалог Выбрать переменную пути.

Если это ваш первый раз или вы связываетесь с новым местоположением, выберите Новый... и укажите переменной разумное имя и путь. Если все ваши проекты расположены в c:\workspaces\foo **, имеет смысл вызвать переменную ** WORKSPACE_ROOT и указать ей этот путь. Если у вас есть какое-то другое соглашение, это нормально, но имеет смысл поставить комментарий в файл .project, чтобы у кого-то появилась возможность выяснить, каково должно быть правильное значение.

Предполагая приведенные выше значения, вы можете теперь установить значение WORKSPACE_ROOT/[название проекта]/src в поле ввода

Как только вы подтвердите, что вы должны увидеть папку src с небольшой стрелкой, и если вы посмотрите в файле .project, посмотрите примерно следующее:

<linkedResources>
    <link>
        <name>src</name>
        <type>2</type>
        <locationURI>WORKSPACE_ROOT/esf-ns-core-rp/src</locationURI>
    </link><!--NOTE the WORKSPACE_ROOT variable points to the folder containing the subject project sandbox-->
</linkedResources>

Теперь вы можете добавить папку src/test/java в качестве исходного местоположения как обычно.

Обратите внимание, что вы также можете использовать только папку src/test/java, изменив конфигурацию на что-то вроде этого:

<linkedResources>
    <link>
        <name>src/test/java</name>
        <type>2</type>
        <locationURI>WORKSPACE_ROOT/my-project/src/test/java</locationURI>
    </link>
</linkedResources>

Это дает больше контроля над конфигурацией, но вам нужно будет повторить для src/test/resources, src/it/java и т.д.

Затем вы установите все тестовые зависимости только в тестовом проекте.

Очень не очень, но он работает (я также использовал это, когда уровень соответствия теста отличается от основного уровня соответствия, например, 1,5 для тестов, но 1,4 для целевой среды).

Ответ 3

Поскольку вы используете как Eclipse, так и Maven, вы можете обойти это. Создайте новую конфигурацию запуска Maven Build с целью "exec: java" и параметрами "exec.mainclass= com.example.Starter". Таким образом, путь к классам будет вычисляться Maven.

Ответ 4

На самом деле, если вы посмотрите в затмение относительно того, как Maven интегрирует зависимости, это не повлияет на зависимости тестов или времени выполнения, ваши тестовые библиотеки всегда доступны.

Maven будет сохранять разницу при упаковке приложения и когда он генерирует путь к классам времени выполнения, если maven контролирует выполнение этой части. Когда Eclipse обеспокоен, Maven просто добавляет их все без вопросов к пути сборки eclipse.

Почему вам нужно, чтобы это разделилось так? Что это поможет вам достичь успеха?