2017-03-17 3 views
0

구성에 정의 된 suite 파일을 사용하여 pom.xml에 다음 항목이 있습니다.Maven 명령 줄에서 testng.xml을 실행하는 방법

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19.1</version> 
    <configuration> 
     <suiteXmlFiles> 
      <suiteXmlFile>testng.xml</suiteXmlFile> 
     </suiteXmlFiles> 
    </configuration> 
</plugin> 

maven을 사용하여 cmd에서 이것을 실행하는 올바른 방법은 무엇입니까? 아래 명령을 사용하여 테스트를 실행할 수 있지만 pom에 이미 정의되어있는 경우 명령에 testng.xml을 다시 표시하는 것은 의미가 없습니다.

mvn clean test -DsuiteXmlFile=testng.xml 

답변

0

먼저, pom.xml 파일에 개선을 추가하시기 바랍니다 ... 필요 추가 실행 섹션 : 초에서

<executions> 
<execution> 
    <phase>test</phase> 
    <goals> 
     <goal>test</goal> 
    </goals> 
</execution> 
</executions> 

을, 당신은 변수의 pom.xml에 섹션을 만들 수 있습니다. 그리고 나서 cmd에서 호출합니다.

<properties> 
<defaultSuiteFiles> 
     ./Sets/Suits/CMS_Administration_SiteBackup_029.xml, 
    </defaultSuiteFiles> 
    <suiteFile>${defaultSuiteFiles}</suiteFile> 
</defaultSuiteFiles> 
</properties> 
... 
... 
<suiteXmlFiles> 
    <suiteXmlFile>${suiteFile}</suiteXmlFile> 
</suiteXmlFiles> 

그래서, 프로토 타입의 pom.xml의 결과

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
..... 
..... 


<properties>   
    <defaultSuiteFiles> 
     ./Sets/Suits/CMS_Administration_SiteBackup_029.xml, 
    </defaultSuiteFiles> 
    <suiteFile>${defaultSuiteFiles}</suiteFile> 


    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<profiles> 
    <profile> 
     <id>Base configuration</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <build> 
      <defaultGoal>install</defaultGoal> 
      <plugins>      
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.19.1</version> 
        <inherited>true</inherited> 
        <executions> 
         <execution> 
          <phase>test</phase> 
          <goals> 
           <goal>test</goal> 
          </goals> 
         </execution> 
        </executions> 
        <configuration> 
         <suiteXmlFiles> 
          <suiteXmlFile>${suiteFile}</suiteXmlFile> 
         </suiteXmlFiles>        
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 
<dependencies> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-java</artifactId> 
     <version>3.3.1</version> 
    </dependency> 
</dependencies> 
</project> 

그리고 이것을 사용 방법 cmd를위한 예 : mvn test -DdefaultSuiteFiles="./YOUR_DIRECTORY/YOUR_SUITE.xml,"

설명이 : 기본에 대한 pom.xml 파일에서 사용자 설정 XMLS 변수에 배치하십시오. cmd에서 variable을 사용하면 값을 다시 작성합니다.

2

고정 된 testng xml이있는 경우 mvn clean test을 입력하기 만하면됩니다. surefire 플러그인은 기본적으로 maven의 테스트 단계에서 실행되며 xml 하드 코드는 선택됩니다.

+0

이 시도. 그것은 작동합니다. testng xml을 트리거하는 가장 간단한 방법 인 것 같습니다. 고맙습니다! – jeffsia

0

가장 쉬운 해결책은 surefire 플러그인에 다음 줄을 추가하는 것입니다.

<suiteXmlFiles> 
    <!-- pass testng.xml files as argument from command line --> 
    <suiteXmlFile>${suiteXmlFile}</suiteXmlFile> 
</suiteXmlFiles> 

그리고 다음과 같이 XML 파일을 실행

mvn clean test -Dsurefire.suiteXmlFiles=/path/to/testng.xml 
관련 문제