REST servisimizi HTTP istekleriyle (kinda blackbox testing) test etmek isterim. Bununla birlikte, birkaç saat süren ve farklı yapılandırmaları deneyen birkaç saatten sonra, Jetty'i doğru şekilde başlatamıyorum. İşte benim şimdiki yapılandırma (birden çok farklı versiyonunu denedik) 'dir:REST testleri için Spring/Jetty (veya Tomcat)/Maven kullanarak Entegrasyon Testlerini Yapılandırma
pom.xml
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.8</version>
<configuration>
<junitArtifactName>junit:junit</junitArtifactName>
<excludes>
<exclude>**/*_Roo_*</exclude>
<exclude>**/*Util*</exclude>
<exclude>**/*IT*</exclude>
</excludes>
<forkMode>once</forkMode>
<argLine>-javaagent:'${settings.localRepository}/org/springframework/spring-instrument/${org.springframework-version}/spring-instrument-${org.springframework-version}.jar' -javaagent:'${settings.localRepository}/org/aspectj/aspectjweaver/${org.aspectj-version}/aspectjweaver-${org.aspectj-version}.jar'</argLine>
<useSystemClassLoader>true</useSystemClassLoader>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.8</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-javaagent:'${settings.localRepository}/org/springframework/spring-instrument/${org.springframework-version}/spring-instrument-${org.springframework-version}.jar' -javaagent:'${settings.localRepository}/org/aspectj/aspectjweaver/${org.aspectj-version}/aspectjweaver-${org.aspectj-version}.jar'</argLine>
<useSystemClassLoader>false</useSystemClassLoader>
</configuration>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
<configuration>
<scanintervalseconds>10</scanintervalseconds>
<stopkey>foo</stopkey>
<stopport>9999</stopport>
<contextpath>/${project.artifactId}</contextpath>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>9090</port>
</connector>
</connectors>
</configuration>
<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>
...
orm.xml Şu anda
<!-- <context:load-time-weaver/> -->
<context:load-time-weaver weaver-class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
<context:spring-configured/>
<context:annotation-config />
<context:component-scan base-package="com.example.jump.domain">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
<tx:annotation-driven transaction-manager="transactionManager" />
, ben istisna alıyorum:
- java.lang.IllegalStateException: ClassLoader [org.mortbay.jetty.webapp.WebAppClassLoader] 'addTransformer (Class FileTransformer) yöntemi. Özel bir LoadTimeWeaver belirtin ya Spring'in ajan ile Java sanal makine başlatmak: -javaagent: org.springframework.instrument.jar
ben istisna anlıyorum ama bunu düzeltmek mümkün değildi. Ayrıca, MAVEN_OPTS aracılığıyla javaagent'i vermek veya VM argslerini Jetty'ye koymaya çalışmak gibi birkaç başka yaklaşımı da denedim. Sorun, Google'ın farklı sürümler için bir grup "çözüm" sunması ve hiçbirinin işe yaramadı.
Şu anda, REST servis testleri yapmak gibi ortak bir senaryonun, Baharda başarmak için çok zor olduğu konusunda oldukça sinirliyim. Doğru yapılandırmayı bulmak için yeterince akıllı olursanız, lütfen bir maymunun bile onu yapılandırabileceği şekilde paylaşın ve biralarla tanışsak söz veriyorum.
Burada kullandığım sürümleri şunlardır:
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.0.5.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.9</org.aspectj-version>
<org.slf4j-version>1.5.10</org.slf4j-version>
<redis.version>1.0.0.BUILD-SNAPSHOT</redis.version>
<org.jboss.hibernate.version>3.6.0.Final</org.jboss.hibernate.version>
<net.sf.ehcache.version>2.3.1</net.sf.ehcache.version>
</properties>
Maven 2.21
gerekirse mutlulukla daha fazla bilgi sağlar. Her yardımın takdir edildiğini söylediğim gibi.
Entegrasyon testi için yükleme süresi dokumasına ihtiyacınız var mı? – sourcedelica
Çevresinde gezinmek MAVEN_OPTS gitmek için yol gibi görünüyor ve kavanoza giden yolda hiçbir boşluk olmadığından emin olmanız gerekiyor. – sourcedelica
Yazdığım gibi, etrafta çok şey yaptım ve ayrıca MAVEN_OPTS'yi buldum, yine de çözüm bulunamadı, yolda boşluk yok. – hjuskewycz