[SPRING] Maven을 사용한 통합 테스트를 위해 전쟁에서 테스트 클래스와 구성을 포함하려면 어떻게해야합니까?
SPRINGMaven을 사용한 통합 테스트를 위해 전쟁에서 테스트 클래스와 구성을 포함하려면 어떻게해야합니까?
현재 통합 테스트를 작성하려고하는 maven 웹 프로젝트가 있습니다. 프로젝트의 구조에서는 src / test / java 아래에 테스트 스텁을 정의했으며,이 스텁에 대한 스프링 빈 정의는 src / test / resources 아래에있다.
제가하고 싶은 것은 전쟁 유물을 만들 때 모든 테스트 스텁 클래스를 컴파일하여 스프링 빈 정의 파일과 함께 전쟁에 포함 시키길 바랍니다. 나는 Maven 전쟁 플러그인으로 그것을 시도했지만, 복사 할 수 있었던 유일한 것들은 자원이다. 간단히 말해, 테스트 클래스 경로를 사용하고 모든 클래스를 war 파일에 포함하고 싶습니다.
메이븐 부두 플러그인과 함께 useTestClassPath 옵션이 내 문제를 해결할 것으로 보이지만 현재 작업중인 현재 프로젝트는 현재 Tomcat 6.0을 사용하고 있습니다. 다른 maven plugin이나 내 목표를 달성하기 위해 Maven war 플러그인을 구성 할 수있는 방법이 있습니까?
해결법
-
==============================
1.당신은 또한 그것을 똑바로 할 수 있습니다. 그러면 테스트 클래스와 테스트 리소스가 모두 WEB-INF / classes에 추가됩니다.
당신은 또한 그것을 똑바로 할 수 있습니다. 그러면 테스트 클래스와 테스트 리소스가 모두 WEB-INF / classes에 추가됩니다.
<plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.7</version> <executions> <execution> <phase>process-test-classes</phase> <configuration> <target> <copy todir="${basedir}/target/classes"> <fileset dir="${basedir}/target/test-classes" includes="**/*" /> </copy> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
또한 "통합"과 같은 별도의 프로필에 배치하고 테스트 패키지가없는 일반 전쟁과 테스트 전쟁을 혼동하지 않도록 해당 프로필의 패키지 이름을 재정의하는 것이 좋습니다.
프로필이있는 전체 예제가 여기에 있습니다. mvn clean 패키지를 실행하여 테스트없이 war war-it-test.war 파일을 만들거나 mvn clean package -Pintegration을 실행하여 테스트와 함께 전쟁을위한 war-it-test-integration.war 파일을 만들 수 있습니다.
-
==============================
2.나는 Maven war 플러그인을 위해 다음과 같은 설정이 당신이 원하는 것을 할 것이라고 믿는다. 테스트 클래스를 WEB-INF / classes 폴더에 복사합니다. 이러한 리소스를 필터링 할 수도 있습니다.
나는 Maven war 플러그인을 위해 다음과 같은 설정이 당신이 원하는 것을 할 것이라고 믿는다. 테스트 클래스를 WEB-INF / classes 폴더에 복사합니다. 이러한 리소스를 필터링 할 수도 있습니다.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <executions> <execution> <id>generate-test-war</id> <phase>pre-integration-test</phase> <goals> <goal>war</goal> </goals> </execution> </executions> <configuration> <warSourceDirectory>${basedir}/src/test/webapp</warSourceDirectory> <warName>${project.artifactId}-test</warName> <webappDirectory>${basedir}/target/${project.artifactId}-test</webappDirectory> <primaryArtifact>false</primaryArtifact> <webResources> <resource> <directory>${basedir}/target/test-classes</directory> <targetPath>WEB-INF/classes</targetPath> </resource> </webResources> </configuration> </plugin>
http://maven.apache.org/plugins/maven-war-plugin/examples/adding-filtering-webresources.html을 참조하십시오.
-
==============================
3.maven 빌드 도우미 플러그인을 사용하여 폴더를 "일반"클래스 경로에 추가 할 수 있습니다.
maven 빌드 도우미 플러그인을 사용하여 폴더를 "일반"클래스 경로에 추가 할 수 있습니다.
하지만 통합 테스트를위한 새 폴더 (예 : src / it / java)를 만들고이 폴더를 추가하는 것이 좋지만 "일반"테스트 폴더 (src / test / java)는 추가하지 마십시오. 폴더.
-
==============================
4.maven Antrun Plugin을 사용하는 대신 Maven 리소스 Plugin을 사용하여 다음과 같이 설정할 수 있습니다 :
maven Antrun Plugin을 사용하는 대신 Maven 리소스 Plugin을 사용하여 다음과 같이 설정할 수 있습니다 :
<plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <executions> <execution> <phase>process-test-classes</phase> <id>test-classes</id> <goals> <goal>copy-resources</goal> </goals> <configuration> <overwrite>false</overwrite> <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory> <resources> <resource> <directory>${project.build.directory}/test-classes</directory> </resource> </resources> </configuration> </execution> </executions> </plugin>
-
==============================
5.추가 클래스 경로 디렉토리 구성과 함께 Tomcat 7 플러그인을 사용하십시오.
추가 클래스 경로 디렉토리 구성과 함께 Tomcat 7 플러그인을 사용하십시오.
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <additionalClasspathDirs> <additionalClasspathDir>${build.testOutputDirectory}</additionalClasspathDir> </additionalClasspathDirs> </configuration> <executions> <execution> <id>start-tomcat</id> <goals> <goal>run</goal> </goals> <configuration> <fork>true</fork> </configuration> </execution> </executions> </plugin>
-
==============================
6.pom.xml 파일에서이 구성을 수행하면 pom.xml에서 오류가 발생하지 않고 jar 또는 war 파일에 테스트 클래스를 추가 할 수 있습니다.
pom.xml 파일에서이 구성을 수행하면 pom.xml에서 오류가 발생하지 않고 jar 또는 war 파일에 테스트 클래스를 추가 할 수 있습니다.
<pluginManagement> <plugins> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <versionRange>[1.7,)</versionRange> <goals> <goal>run</goal> </goals> </pluginExecutionFilter> <action> <execute /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement> <plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.7</version> <executions> <execution> <phase>process-test-classes</phase> <configuration> <target> <copy todir="${basedir}/target/classes"> <fileset dir="${basedir}/target/test-classes" includes="**/*" /> </copy> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins>
-
==============================
7.테스트 케이스를 jar 파일에 추가하려면 pom.xml에 아래 플러그인을 추가해야합니다. @IvonSopov에 감사드립니다.
테스트 케이스를 jar 파일에 추가하려면 pom.xml에 아래 플러그인을 추가해야합니다. @IvonSopov에 감사드립니다.
<plugin> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>process-test-classes</phase> <configuration> <target> <copy todir="${basedir}/target/classes"> <fileset dir="${basedir}/target/test-classes" includes="**/*" /> </copy> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
하지만이 줄을 추가하면 빌드가 성공하고 테스트 케이스 클래스를 jar 파일에 추가 할 수 있습니다. 그러나 문제는 pom.xml에 다음과 같은 오류로 표시됩니다.
이 오류를 제거하려면 아래 플러그인을 빌드 태그 내에 별도의 태그로 포함시켜야합니다. (이전에 추가 한 플러그인에는 포함되지 않습니다.)
<pluginManagement> <plugins> <plugin> <groupId>org.eclipse.m2e</groupId> <artifactId>lifecycle-mapping</artifactId> <version>1.0.0</version> <configuration> <lifecycleMappingMetadata> <pluginExecutions> <pluginExecution> <pluginExecutionFilter> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <versionRange>[1.7,)</versionRange> <goals> <goal>run</goal> </goals> </pluginExecutionFilter> <action> <execute /> </action> </pluginExecution> </pluginExecutions> </lifecycleMappingMetadata> </configuration> </plugin> </plugins> </pluginManagement>
이제 오류없이 테스트 클래스를 포함하는 jar 파일을 만들 수 있습니다.
from https://stackoverflow.com/questions/14052694/how-do-i-include-test-classes-and-configuration-in-my-war-for-integration-testin by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 숫자와 다음, 이전의 Jpa 페이징 (0) | 2019.04.19 |
---|---|
[SPRING] App Engine에서 Spring AOP를 사용하면 StackOverflowError가 발생합니다. (0) | 2019.04.19 |
[SPRING] ApplicationContext를로드하지 못했습니다 (주석 첨부). (0) | 2019.04.19 |
[SPRING] Spring Security에서 어떤 종류의 소유권을 기반으로 사용자 역할 설정하기 (0) | 2019.04.18 |
[SPRING] 클라이언트가 보낸 요청은 구문 적으로 올바르지 않습니다 (). + Spring, RESTClient (0) | 2019.04.18 |