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

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

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

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

Ответы [ 4 ]

5 голосов
/ 13 августа 2010

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

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

2 голосов
/ 13 августа 2010

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

1 голос
/ 14 марта 2011

<useTestClasspath>true</useTestClasspath>

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

1 голос
/ 13 августа 2010

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

<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>
    ...
...