Как я могу включить тестовые классы в взорванную войну для интеграционного тестирования с использованием Maven, Jetty и Spring?

Я пытаюсь провести интеграционные тесты с Spring, Maven и Jetty. У меня есть сервер Jetty для запуска моего приложения до того, как интеграционные тесты начнутся с использованием плагина Maven Jetty и цели предварительного интеграционного тестирования. Это хорошо работает для тестирования с использованием net.sourceforge.jwebunit.junit.WebTestCase.

Теперь мне нужно загрузить «дополнительные» bean-компоненты в приложение, когда оно запускается для интеграционных тестов. Это было бы легко, если бы мои тестовые классы и ресурсы можно было каким-то образом развернуть с приложением. Кто-нибудь знает простой способ сделать это?

Я хочу иметь возможность «макетировать» некоторые вещи (например, отправку электронной почты) и писать интеграционные тесты, которые нелегко выполнить только через «интерфейс».


person David Tinker    schedule 13.08.2010    source источник


Ответы (4)


Теперь мне нужно загрузить «дополнительные» bean-компоненты в приложение, когда оно запускается для интеграционных тестов. Это было бы легко, если бы мои тестовые классы и ресурсы можно было каким-то образом развернуть с приложением. Кто-нибудь знает простой способ сделать это?

Я бы создал отдельный модуль интеграционных тестов, поместил дополнительные классы тестов и файлы конфигурации в дерево исходный код и использовал Overlays для создания "тестовой WAR", включающей эти файлы. Аналогичный подход см. в разделе JSFUnit с Maven.

person Pascal Thivent    schedule 13.08.2010

Я нашел простое решение в этой теме. Плагин Jetty поддерживает добавление дополнительных элементов в путь к классам веб-приложения. Это идеально, так как мне просто нужно аннотировать дополнительные тестовые компоненты с помощью @Component, и Spring загружает их в приложение.

<webAppConfig>
  <contextPath>/${project.name}</contextPath>
  <extraClasspath>${project.build.testOutputDirectory}</extraClasspath>
</webAppConfig>
person David Tinker    schedule 13.08.2010
comment
Действительно, это еще один вариант :) - person Pascal Thivent; 13.08.2010

Вы можете определить профиль «интеграции» в вашем pom-файле, который запускается при запуске mvn с флагом -Pintegration. Затем вы используете другой applicationContext.xml, определяющий дополнительные bean-компоненты из каталога, специфичного для среды, например, src/main/external-resources/integration.

<profile>
  <id>integration</id>
  <properties>
    <env>integration</env>
  </properties>
  <build>
    <resources>
      <resource>
        <directory>src/main/external-resources/${env}</directory>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
    ...
person Jeroen Rosenberg    schedule 13.08.2010

<useTestClasspath>true</useTestClasspath>

в разделе конфигурации.

person user659095    schedule 14.03.2011