Maven 2에서 기본적으로 실행되지 않도록 장기 달리기 (예 : 스트레스 테스트)를 분리하는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/251730

문제

우리는 여기에서 지속적으로 필요했습니다. Stock Maven 2 도구 및 문서를 사용하여 해결하는 방법을 알 수 없습니다.

우리의 개발자 중 일부는 어떤 상황에서도 빌드 프로세스 / 야간 빌드의 정기적 인 부분으로 실행해서는 안되는 매우 긴 주니트 테스트 (일반적으로 스트레스 테스트)를 가지고 있습니다.

물론 우리는 SureFire 플러그인의 제외 메커니즘을 사용하여 빌드에서 펀트 할 수 있지만 이상적으로는 개발자가 Maven 2를 통해 마음대로 실행할 수있는 것을 좋아합니다.

도움이 되었습니까?

해결책

일반적으로 다른 테스트 세트를 실행하는 Maven 구성에 프로필을 추가합니다.

MVN -PintegrationTest 설치로 실행하십시오

    <profile>
        <id>integrationtest</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <argLine>-client -Xmx896m -XX:MaxPermSize=192m</argLine>
                        <forkMode>once</forkMode>
                        <includes>
                            <include>**/**/*Test.java</include>
                            <include>**/**/*IntTest.java</include>
                        </includes>
                        <excludes>
                            <exclude>**/**/*SeleniumTest.java</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <activation>
            <property>
                <name>integrationtest</name>
            </property>
        </activation>
    </profile>

다른 팁

추가 Krosenvold예상치 못한 동작을 보장하지 않으려면 기본적으로 활성화 된 기본 프로파일이 있는지 확인하십시오. 제외 특별 프로필에서 실행하려는 통합 또는 스트레스 테스트.

<profile>
    <id>normal</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>**/**/*IntTest.java</exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>

이와 같은 프로파일을 만들어야합니다. 프로파일 외부의 Surefire-Plugin을 나열하면 프로필이 선택되면 프로필을 무시합니다.

mvn -P integrationtest clean install

The와 같은 통합 테스트 플러그인을 사용하십시오 매우 유용한 통합 테스트 통합 테스트 (장기 실행, 체계)를 단위 테스트와 분리하려면 (순수 주의자는 모든 실제 단위 테스트가 실행될 때까지 최대 30 초라고 함). 단위 테스트와 통합 테스트를위한 2 개의 Java 패키지를 만드십시오.

그런 다음이 플러그인을 위상 (일반 Maven 라이프 사이클)에 바인딩하지 말고 다음과 같이 대상으로 명시 적으로 호출 될 때만 실행하십시오.mvn shitty:clean shitty:install shitty:test

<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>shitty-maven-plugin</artifactId>
  </plugin>
</plugins>

이런 식으로 일반 개발자는 영향을받지 않으며 주문시 통합 테스트를 실행할 수 있습니다.

또 다른 옵션은 스트레스 테스트가 Maven에서 실행 중이며 한두 번만 실행되는 것을 감지하는 것입니다. 즉, 정기적 인 기능 테스트로 바뀝니다. 이렇게하면 코드가 여전히 좋지만 오랫동안 실행되지는 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top