2017-10-17 24 views
0

Maven 자동화 된 테스트 세트와 Cucumber 자동 테스트 스위트를 포함하는 Java 프로젝트를 작성 중입니다. 이것이 이상적이지는 않다는 것을 알았지 만 다른 테스트 스위트는 프로젝트의 다른 단계에서 다른 하위 팀이 작성했습니다. 앞으로 우리는이 프로젝트를 소규모 프로젝트로 나눌 계획이지만, 현재 우리는이 믹스를 고수하고 있습니다.pom.xml에서 Maven 플러그인을 두 번 구성하기

플러그인은 Maven에서 테스트를 실행할 수 있지만 플러그인은 pom.xml에서 각각 다르게 구성해야합니다. Cucumber를 들어

, 우리는 cucumber-jvm-parallel-plugin와 함께 그것을 사용하고 그것은 다음과 같이 구성되어 있습니다 : 우리 TestNG 시험

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.20.1</version> 
      <configuration> 
       <forkCount>${threads}</forkCount> 
       <reuseForks>true</reuseForks> 
       <includes> 
        <include>**/Parallel*IT.class</include> 
       </includes> 
      </configuration> 
     </plugin> 

, 그것은 다음과 같이 구성되어

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.20.1</version> 
      <configuration> 
       <suiteXmlFiles>${file}</suiteXmlFiles> 
       <skipTests>false</skipTests> 
       <properties> 
        <property> 
         <name>suitethreadpoolsize</name> 
         <value>${threads}</value> 
        </property> 
       </properties> 
      </configuration> 
     </plugin> 

우리는하지 않습니다 Maven 전문가와 지금, 우리는 우리가 실행중인 스위트에 사용하고 싶지 않은 플러그인 버전을 주석 처리합니다. 분명히 이것은 성 가시고 모범 사례는 아니므로, 우리가 어떻게이 문제를 다루어야하는지에 대한 조언을 주신다면 매우 감사 할 것입니다. pom.xml에서 플러그인을 두 번 정당하게 정의 할 수 있고 어떤 버전을 실행해야 하는지를 나타내는 플래그를 전달할 수 있습니까? 내 질문을 읽어 주셔서 고맙습니다.

+0

기본 명명 스키마가있는 maven-failsafe-plugin ...을 사용하여 통합 테스트를 수행해야합니다 ... – khmarbaise

답변

1

사용 maven profiles 적절한 구성을 선택합니다 :

이 조각 추가

<profiles> 
    <profile> 
     <id>Cucumber</id> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <forkCount>${threads}</forkCount> 
        <reuseForks>true</reuseForks> 
        <includes> 
         <include>**/Parallel*IT.class</include> 
        </includes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </profile> 
    <profile> 
     <id>TestNG</id> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <suiteXmlFiles>${file}</suiteXmlFiles> 
        <properties> 
         <property> 
          <name>suitethreadpoolsize</name> 
          <value>${threads}</value> 
         </property> 
        </properties> 
       </configuration> 
      </plugin> 
     </plugins> 
    </profile> 
</profiles> 

을이

명령 줄에서 원하는 프로파일을 pecify해야
<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.20.1</version> 
    </plugin> 
    <!-- delete on of the entries --> 
</plugins> 

변경 :

mvn test -P Cucumber 
    mvn test -P TestNG 
당신은 또한 한 번에 모두 실행할 수 있습니다

비트 :

mvn test -P Cucumber -P TestNG 
mvn test -P Cucumber,TestNG 
+0

또한 테스트 (cuke 및 TestNG)에 대한 많은 프로필을 추가 ​​할 수 있습니다. 연기, 가득 차있는 등. – dimyo

+0

나는 위에서 제안했던 변경을했다. 그리고 나의 시험은 지금 바라고있는 것에 맞붙고있다. 나는 그 해답을 매우 고맙게 생각한다. 고맙습니다. –

1

은 실행할 테스트의 각 세트에 대한 다운 스트림 받는다는 프로젝트를 만듭니다. 더 많은 일을 앞두고 있지만 꽤 빨리 처리됩니다.

+0

예, 좋은 답변입니다 - 고맙습니다. 이것은 장기 계획 일 것입니다. 단기간에, 나는 다른 대답에서 제안을 구현했고 그들은 훌륭하게 일했습니다. –

+0

위대한 솔루션을 찾았습니다. 프로파일을 사용하면 재현성있는 빌드를 만드는 것이 어려워졌습니다. 귀하와 관련이있을 수도 있고 아닐 수도 있습니다. –