Знаток модуль EAR и тесты зависимостей EJB

Измените свой форматер текста (в app.config), чтобы использовать время локального сервера, в противном случае по умолчанию используется UTC.

например. заменить токен {timestamp} на {timestamp (local)}

7
задан m_vitaly 27 July 2009 в 03:55
поделиться

2 ответа

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

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

Вы можете использовать Ejb3unit , чтобы максимизировать количество тестов, которые не требуют запуска контейнера. Это помогает имитировать некоторые сложные зависимости. Ejb3unit имеет плагин Maven, подробности подключения к их репозиторию Maven см. В документации .

Также могут помочь другие фреймворки имитации, такие как JMock. Вы можете имитировать классы, а также интерфейсы, если используете ClassImposteriser .

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

Можно запустить встроенный Экземпляр Jetty в ваших тестах JUnit и программно добавляет к нему сервлеты. Конечно, Jetty не является контейнером EJB. Вам понадобится контейнер EJB, например OpenEJB .

Чтобы настроить OpenEJB в Jetty, используйте такую ​​конфигурацию:

<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>maven-jetty-plugin</artifactId>
  <configuration>
    <scanIntervalSeconds>5</scanIntervalSeconds>
    <contextPath>/example</contextPath>
    <systemProperties>
      <systemProperty>
        <name>java.naming.factory.initial</name>
        <value>org.apache.openejb.client.LocalInitialContextFactory</value>
      </systemProperty>
      <systemProperty>
        <name>java.naming.factory.url.pkgs</name>
        <value>org.mortbay.naming</value>
      </systemProperty>
    </systemProperties>
  </configuration>
</plugin>

Объявления зависимостей для OpenEJB будут be:

<dependency>
  <groupId>org.apache.openejb</groupId>
  <artifactId>openejb-core</artifactId>
  <version>3.1</version>
  <scope>test</scope>
</dependency>

Вы также можете использовать Selenium , чтобы помочь с функциональными тестами (если вы дошли до этого места), вот руководство по использованию Selenium, Jetty и OpenEJB для этого.

в зависимости от взаимосвязей между вашими проектами EJB.

Можно запустить встроенный экземпляр Jetty в ваших тестах JUnit и программно добавить к нему сервлеты. Конечно, Jetty не является контейнером EJB. Вам понадобится контейнер EJB, например OpenEJB .

Чтобы настроить OpenEJB в Jetty, используйте такую ​​конфигурацию:

<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>maven-jetty-plugin</artifactId>
  <configuration>
    <scanIntervalSeconds>5</scanIntervalSeconds>
    <contextPath>/example</contextPath>
    <systemProperties>
      <systemProperty>
        <name>java.naming.factory.initial</name>
        <value>org.apache.openejb.client.LocalInitialContextFactory</value>
      </systemProperty>
      <systemProperty>
        <name>java.naming.factory.url.pkgs</name>
        <value>org.mortbay.naming</value>
      </systemProperty>
    </systemProperties>
  </configuration>
</plugin>

Объявления зависимостей для OpenEJB будут be:

<dependency>
  <groupId>org.apache.openejb</groupId>
  <artifactId>openejb-core</artifactId>
  <version>3.1</version>
  <scope>test</scope>
</dependency>

Вы также можете использовать Selenium , чтобы помочь с функциональными тестами (если вы дошли до этого места), вот руководство по использованию Selenium, Jetty и OpenEJB для этого.

в зависимости от взаимосвязей между вашими проектами EJB.

Можно запустить встроенный экземпляр Jetty в ваших тестах JUnit и программно добавить к нему сервлеты. Конечно, Jetty не является контейнером EJB. Вам понадобится контейнер EJB, например OpenEJB .

Чтобы настроить OpenEJB в Jetty, используйте такую ​​конфигурацию:

<plugin>
  <groupId>org.mortbay.jetty</groupId>
  <artifactId>maven-jetty-plugin</artifactId>
  <configuration>
    <scanIntervalSeconds>5</scanIntervalSeconds>
    <contextPath>/example</contextPath>
    <systemProperties>
      <systemProperty>
        <name>java.naming.factory.initial</name>
        <value>org.apache.openejb.client.LocalInitialContextFactory</value>
      </systemProperty>
      <systemProperty>
        <name>java.naming.factory.url.pkgs</name>
        <value>org.mortbay.naming</value>
      </systemProperty>
    </systemProperties>
  </configuration>
</plugin>

Объявления зависимостей для OpenEJB будут be:

<dependency>
  <groupId>org.apache.openejb</groupId>
  <artifactId>openejb-core</artifactId>
  <version>3.1</version>
  <scope>test</scope>
</dependency>

Вы также можете использовать Selenium , чтобы помочь с функциональными тестами (если вы зашли так далеко), вот руководство по использованию Selenium, Jetty и OpenEJB для этого.

7
ответ дан 7 December 2019 в 05:26
поделиться

Для JBoss вы можете попробовать плагин Maven Cargo . В настоящее время я тестирую его с помощью JBoss 5.1 и все еще работаю над ним:

Где я могу найти полный пример плагина Maven Cargo для тестов EJB?

1
ответ дан 7 December 2019 в 05:26
поделиться
Другие вопросы по тегам:

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