복붙노트

[SPRING] Maven을 사용한 통합 테스트를 위해 전쟁에서 테스트 클래스와 구성을 포함하려면 어떻게해야합니까?

SPRING

Maven을 사용한 통합 테스트를 위해 전쟁에서 테스트 클래스와 구성을 포함하려면 어떻게해야합니까?

현재 통합 테스트를 작성하려고하는 maven 웹 프로젝트가 있습니다. 프로젝트의 구조에서는 src / test / java 아래에 테스트 스텁을 정의했으며,이 스텁에 대한 스프링 빈 정의는 src / test / resources 아래에있다.

제가하고 싶은 것은 전쟁 유물을 만들 때 모든 테스트 스텁 클래스를 컴파일하여 스프링 빈 정의 파일과 함께 전쟁에 포함 시키길 바랍니다. 나는 Maven 전쟁 플러그인으로 그것을 시도했지만, 복사 할 수 있었던 유일한 것들은 자원이다. 간단히 말해, 테스트 클래스 경로를 사용하고 모든 클래스를 war 파일에 포함하고 싶습니다.

메이븐 부두 플러그인과 함께 useTestClassPath 옵션이 내 문제를 해결할 것으로 보이지만 현재 작업중인 현재 프로젝트는 현재 Tomcat 6.0을 사용하고 있습니다. 다른 maven plugin이나 내 목표를 달성하기 위해 Maven war 플러그인을 구성 할 수있는 방법이 있습니까?

해결법

  1. ==============================

    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. ==============================

    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. ==============================

    3.maven 빌드 도우미 플러그인을 사용하여 폴더를 "일반"클래스 경로에 추가 할 수 있습니다.

    maven 빌드 도우미 플러그인을 사용하여 폴더를 "일반"클래스 경로에 추가 할 수 있습니다.

    하지만 통합 테스트를위한 새 폴더 (예 : src / it / java)를 만들고이 폴더를 추가하는 것이 좋지만 "일반"테스트 폴더 (src / test / java)는 추가하지 마십시오. 폴더.

  4. ==============================

    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. ==============================

    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. ==============================

    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. ==============================

    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 파일을 만들 수 있습니다.

  8. 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