2013-12-18 4 views
1

앵귤러로 끝을 테스트하여 임베디드 부두를 실행하려고합니다.임베디드 부두가 작동하지 않는 통합 테스트

첫째, pom.xml 파일이 conf의를 만들었습니다

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>maven-jetty-plugin</artifactId> 
    <version>6.1.26</version> 
    <configuration> 
    <scanIntervalSeconds>10</scanIntervalSeconds> 
    <stopKey>foo</stopKey> 
    <stopPort>9999</stopPort> 
    <contextPath>/</contextPath> 
    <connectors> 
     <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> 
     <port>29439</port> 
     <maxIdleTime>60000</maxIdleTime> 
     </connector> 
    </connectors> 
    </configuration> 
    <dependencies> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${slf4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>${logback.version}</version> 
    </dependency> 
    </dependencies> 
    <executions> 
    <execution> 
     <id>start-jetty</id> 
     <phase>pre-integration-test</phase> 
     <goals> 
     <goal>run</goal> 
     </goals> 
     <configuration> 
     <scanIntervalSeconds>0</scanIntervalSeconds> 
     <daemon>true</daemon> 
     </configuration> 
    </execution> 
    <execution> 
     <id>stop-jetty</id> 
     <phase>post-integration-test</phase> 
     <goals> 
     <goal>stop</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

하지만 시험은 카르마 E2E이 부두에서 응답을 기다리고 차단됩니다. localhost : 29439를 탐색하려고하면 아무 것도 없습니다.

그것은 디버그 매우 어렵다으로

, 나는 새로운 부두 버전으로 업그레이드하려고하지만 지옥 :(

exemple를 들어, 다음의 conf 나에게 NoClassDefFound 오류주고 유지로가는 길이었다

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>jetty-maven-plugin</artifactId> 
    <version>7.6.14.v20131031</version> 
    <configuration> 
    <scanIntervalSeconds>10</scanIntervalSeconds> 
    <stopKey>STOP</stopKey> 
    <stopPort>9999</stopPort> 
    <webApp> 
     <contextPath>/</contextPath> 
    </webApp> 
    <connectors> 
     <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
     <port>29439</port> 
     <maxIdleTime>60000</maxIdleTime> 
     </connector> 
    </connectors> 
    </configuration> 
    <dependencies> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>${slf4j.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>${logback.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-jsp</artifactId> 
     <version>7.6.14.v20131031</version> 
    </dependency> 
    </dependencies> 
    <executions> 
    <execution> 
     <id>start-jetty</id> 
     <phase>pre-integration-test</phase> 
     <goals> 
     <goal>start</goal> 
     </goals> 
     <configuration> 
     <scanIntervalSeconds>0</scanIntervalSeconds> 
     <daemon>true</daemon> 
     </configuration> 
    </execution> 
    <execution> 
     <id>stop-jetty</id> 
     <phase>post-integration-test</phase> 
     <goals> 
     <goal>stop</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

모든 솔루션이나 팁, 중 1 버전을 디버깅에 도움 또는 2 버전은 작동 할 것입니다.

답변

1

실제로 동작하는 pom.xml 파일을 당신을 위해.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.eclipse.jetty.demo</groupId> 
    <artifactId>webapp-2.5</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>webapp-2.5 Maven Webapp</name> 
    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <jetty-version>7.6.14.v20131031</jetty-version> 
    <slf4j-version>1.7.5</slf4j-version> 
    <logback-version>1.0.13</logback-version> 
    </properties> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
     <scope>provided</scope> 
    </dependency> 
    </dependencies> 
    <build> 
    <finalName>webapp-2.5</finalName> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.1</version> 
     <configuration> 
      <source>1.5</source> 
      <target>1.5</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.mortbay.jetty</groupId> 
     <artifactId>jetty-maven-plugin</artifactId> 
     <version>${jetty-version}</version> 
     <configuration> 
      <scanIntervalSeconds>10</scanIntervalSeconds> 
      <stopKey>STOP</stopKey> 
      <stopPort>9999</stopPort> 
      <webApp> 
      <contextPath>/</contextPath> 
      </webApp> 
      <connectors> 
      <connector 
       implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
       <port>28080</port> 
       <maxIdleTime>60000</maxIdleTime> 
      </connector> 
      </connectors> 
     </configuration> 
     <dependencies> 
      <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${slf4j-version}</version> 
      </dependency> 
      <dependency> 
      <groupId>ch.qos.logback</groupId> 
      <artifactId>logback-classic</artifactId> 
      <version>${logback-version}</version> 
      </dependency> 
      <dependency> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-jsp</artifactId> 
      <version>${jetty-version}</version> 
      </dependency> 
     </dependencies> 
     <executions> 
      <execution> 
      <id>start-jetty</id> 
      <phase>pre-integration-test</phase> 
      <goals> 
       <goal>start</goal> 
      </goals> 
      <configuration> 
       <scanIntervalSeconds>0</scanIntervalSeconds> 
       <daemon>true</daemon> 
      </configuration> 
      </execution> 
      <execution> 
      <id>stop-jetty</id> 
      <phase>post-integration-test</phase> 
      <goals> 
       <goal>stop</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

로깅이 구성된 통합 단계 시작/중지는 물론 Servlet 2.5 웹 응용 프로그램에서 $ mvn jetty:run을 지원합니다.

실시 예의

실제로 동작 예는 웹 애플리케이션 github에 업로드되고있다.

https://github.com/jetty-project/jetty-maven-plugin-examples

당신의 부두 - 받는다는 - 플러그인 구성을 사용하여 부두 서버를 실행하려면 전쟁

$ mvn clean install 

를 구축 할 수있는 웹 애플리케이션-2.5 하위 프로젝트

를 참조

$ mvn jetty:run 

브라우저를 계속 방문하고 다음 URL 중 하나를 누르면 그것은 작동합니다.

  • http://localhost:28080/-org.eclipse.demo.TimeServlet
  • http://localhost:28080/flarnsworth에서 간단한 서블릿 응답 - - src/main/webapp/index.html
  • http://localhost:28080/time에서 단순 HTML 응답 잘못된 참조하므로 이는 <error-page> 처리를 실행하고 org.eclipse.jetty.demo.ErrorServlet
  • http://localhost:28080/dump.jsp로부터 응답을 반환 - jsp 응답 : src/main/webapp/dump.jsp
+0

Ahhhh ... 내 E2E 테스트가 차단되었습니다 : karma start /Users/ygrenzinger/Xebia/SFR/sibo360/src/test/resources/karma.e2e.conf - 단일 실행 시도하려고하면 localhost 29439 응답이 없습니다. 그리고 Ctrl-C를 사용하여 maven을 종료하면이 오류가 표시됩니다. [경고] FAILED jsp : java.lang.NoClassDefFoundError : org/apache/jasper/runtime/JspApplicationContextImpl java.lang.NoClassDefFoundError : org/apache/jasper/runtime/JspApplicationContextImpl – user358501

+0

표시되는 JSP 오류는 해당 pom의 예제가 아닙니다. (거의) pom은 방금 업로드 한 예제 프로젝트에 있습니다. –