2017-02-22 1 views
2

마침내 JUnit4를 사용하여 각 테스트 자동화마다 @Category을 실행했습니다. PriorityHigh, PriorityMedium 또는 PriorityLow으로 표시됩니다. 다음 플러그인 섹션에서 사용되는명령 줄에 여러 Maven 프로필을 지정하여 스택 등록 정보

<profile> 
    <id>PriorityHigh</id> 
    <properties> 
     <testcase.category>com.categories.PriorityHigh</testcase.category> 
    </properties> 
</profile> 
<profile> 
    <id>PriorityMedium</id> 
    <properties> 
     <testcase.category>com.categories.PriorityMedium</testcase.category> 
    </properties> 
</profile> 
<profile> 
    <id>PriorityLow</id> 
    <properties> 
     <testcase.category>com.categories.PriorityLow</testcase.category> 
    </properties> 
</profile> 

이 : 나는 중간 모두를 테스트 할 때

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>${surefire.version}</version> 
    <configuration> 
     <groups>${testcase.category}</groups> 
     <systemPropertyVariables> 
      <automation.driver>${browser.name}</automation.driver> 
     </systemPropertyVariables> 
    </configuration> 
</plugin> 

내 문제는 내가 각각 프로파일로 설정 한 내 pom.xml에서

높음, 지정 함

-P PriorityHigh,PriorityMedium 

하지만 추가/연결하는 대신 덮어 쓰기 때문에 onl y 중간 테스트가 실행됩니다. pom.xml은 $ {testcase.category}의 프로파일 만 존재 불평 때문에, 여분의 어려움을 추가하지 않고 기본값으로,이를 추가했다 :

<testcase.category>com.categories.PriorityHigh,com.categories.PriorityMedium,com.categories.PriorityLow</testcase.category> 

이 경우에는 프로파일이 지정되지 않습니다.

그래서 두 가지 질문 :

  1. 어떻게 프로파일은 "그룹"노드에서 제대로 쌓아 갈 수있는?
  2. 프로필이 지정되지 않은 경우 (모든 테스트가 실행되어야 함) 더 나은 방법으로 작업 할 수 있습니까? 당신이 완전히 지정해야하지 않으려면

    mvn verify -Dtestcase.category=com.categories.PriorityHigh 
    # runs PriorityHigh tests 
    
    mvn verify -Dtestcase.category=com.categories.PriorityHigh,com.categories.PriorityLow 
    # runs PriorityHigh and PriorityLow tests 
    
    mvn verify 
    # runs PriorityHigh and PriorityLow tests 
    

    : 다음

    <properties> 
        <testcase.category>com.categories.PriorityHigh,com.categories.PriorityLow</testcase.category> 
    </properties> 
    
    ... 
    
    <plugin> 
        <artifactId>maven-surefire-plugin</artifactId> 
        <version>2.19.1</version> 
        <configuration> 
        <groups>${testcase.category}</groups> 
        ... 
        </configuration> 
    </plugin> 
    

    : 할

답변

3

가장 쉬운 일이 프로파일을 도랑 그냥 시스템 속성을 사용하는 것입니다 Maven 명령 줄에서 정규화 된 클래스 이름을 사용하려면 Build Helper 플러그인을 사용하여 이름을 한정 할 수 있습니다.

<properties> 
    <testcase.category>PriorityHigh,PriorityLow</testcase.category> 
</properties> 

... 

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>3.0.0</version> 
    <executions> 
    <execution> 
     <id>build-fq-testcase-category</id> 
     <goals> 
     <goal>regex-property</goal> 
     </goals> 
     <configuration> 
     <name>fq.testcase.category</name> 
     <regex>([^,]+)</regex> 
     <value>${testcase.category}</value> 
     <replacement>com.categories.$1</replacement> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.19.1</version> 
    <configuration> 
    <groups>${fq.testcase.category}</groups> 
    </configuration> 
</plugin> 

다음 :

mvn verify -Dtestcase.category=PriorityHigh 
# just run PriorityHigh tests 

mvn verify 
# run PriorityLow and PriorityHigh tests 

# etc. 
+0

고맙습니다! 훨씬 간단한 솔루션. 필자의 유일한 불만은 Build Helper 플러그인을 사용할 때 fq.testcase.name이 IDE에서 값으로 인식되지 않으므로 항상 오류 값을 표시한다는 것입니다. 코드는 여전히 컴파일되고 테스트는 계속 실행되지만 나에 대한 강박증은 이름이 빨간색으로 들리지 않습니다. – MivaScott

+1

IDE를 속이려면 ''섹션에 빈 값 또는 임의의 값으로 추가하십시오. – ryanp

+0

어떤 이유인지, 빈 속성을 추가하면 카테고리가 중지됩니다 일. 즉, 우선 순위에 관계없이 모든 테스트를 실행합니다. – MivaScott

관련 문제