2013-12-16 7 views
1

Кто-нибудь знает что-нибудь о Embedded Glassfish? Я хочу запустить некоторые из моих тестов EJB, но я не хочу запускать и останавливать встроенную стеклянную панель каждый раз, когда я запускаю тест.Использование встроенной стеклянной рыбы с Maven

Согласно документации плагина я должен поместить это в POM:

  <plugin> 
      <groupId>org.glassfish</groupId> 
      <artifactId>maven-embedded-glassfish-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <app>target/ejbcontainer-1.0-SNAPSHOT.jar</app> 
       <name>test</name> 
       <ports> 
        <http-listener>8080</http-listener> 
        <https-listener>8181</https-listener> 
       </ports> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>start</goal> 
         <goal>deploy</goal> 
         <goal>undeploy</goal> 
         <goal>stop</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.16</version> 
      <configuration> 
       <skip>true</skip> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>integration-test</phase> 
        <goals> 
         <goal>test</goal> 
        </goals> 
        <configuration> 
         <skip>false</skip> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Это все хорошо. Я могу «запустить» эту встроенную стеклянную рыбу, и я получаю это в своей консоли, которая доказывает, что ее работа:

Информация: тест был успешно развернут в 1,124 миллисекундах. PlainTextActionReporterSUCCESSDescription: deploy AdminCommandApplication, развернутый с тестом имен. [имя = тест 16 декабря 2013 6:03:29 PM PluginUtil doDeploy Информация: Развернутый тест Hit ENTER перераспределить, X, чтобы выйти из

Однако, когда я 'Выполнить' Мои тестовые файлы, создается новый экземпляр встроенной стеклянной рыбы.

Мои тестовые файлы не собирают текущий контейнер.

Вот TestFile, если это помогает:

public class Test extends TestCase { 

    private Context ctx; 
    private EJBContainer ejbContainer; 

    public Test(String testName) { 
     super(testName); 
    } 

    @BeforeClass 
    public void setUp() { 
     ejbContainer = EJBContainer.createEJBContainer(); 

     System.out.println("Opening the container"); 

     ctx = ejbContainer.getContext(); 
    } 

    @AfterClass 
    @Override 
    public void tearDown() { 
     ejbContainer.close(); 
     System.out.println("Closing the container"); 
    } 

    @org.junit.Test 
    public void testApp() throws Exception { 
     TemperatureConverter converter = (TemperatureConverter) ctx.lookup("java:global/classes/TemperatureConverter"); 
     assertNotNull(converter); 
    } 
} 

ответ

2

Просто заметил этот вопрос, как я играю со встроенным GlassFish себя и иметь несколько проблем конфигурации, в основном связанные с входом выхода.

Способ, которым я использую встроенную стеклянную рыбку для тестирования, - это привязать ее к фазе интеграции интеграции Maven, например.

  <executions> 
      <!-- Start embedded GlassFish --> 
      <execution> 
       <id>start</id> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>start</goal> 
       </goals> 
      </execution> 
      <execution> 
       <id>deploy</id> 
       <phase>pre-integration-test</phase> 
       <goals> 
        <goal>deploy</goal> 
       </goals> 
      </execution> 
      <execution> 
       <id>stop</id> 
       <phase>post-integration-test</phase> 
       <goals> 
        <goal>undeploy</goal> 
        <goal>stop</goal> 
       </goals> 
      </execution> 
      </executions> 

и использовать Maven Failsafe Plugin для выполнения тестов в рамках проверки цели. Тем не менее, они больше походят на интеграционные тесты. Если вы назовете свой тестовый файл суффиксом IT, например. myTestFileIT.java, то их следует автоматически подбирать.

Вы можете запустить тесты, выполнив следующую команду Maven:

mvn verify 

Я был первоначально использованием встроенного Jetty, который где я имел эту установку работая очень хорошо, я нашел GlassFish быть немного более сложным и довольно трудоемким, чтобы настроить именно то, что мне нужно.

Надеюсь, что это поможет с вашей проблемой.

Смежные вопросы