maven surefire 플러그 인 소개


1. surefire plugin 의 역할
surefire 플러그 인 은 maven 에서 수명 주 기 를 구축 하 는 test phase 에서 응용 유닛 테스트 를 수행 합 니 다.그것 은 두 가지 다른 형식 을 만들어 낼 것 이다.
의 테스트 결과 보고서:
1). 일반 텍스트
2). xml 파일 형식의
기본적으로 이 파일 들 은 프로젝트 의 ${basedir} / target / surefire - reports 에 생 성 됩 니 다. 디 렉 터 리 아래 (basedir 는 pom 파일 이 있 는 디 렉 터 리 를 말 합 니 다).
모든 testng, Junit, pojo 가 쓴 유닛 테스트 를 실행 할 수 있 습 니 다.
2. 어떻게 사용 하나 요?
이 플러그 인 을 사용 하 는 것 은 매우 간단 합 니 다. mvn surefire: test 또는 mvn test 를 사용 하면 프로젝트 의 유닛 테스트 를 실행 할 수 있 습 니 다.
3. 설정 방법
1. 설정 에 의존:
1). TestNG 를 사용한다 면 이 설정 에 따라:
pom 파일 에 testng 의존 도 를 도입 합 니 다:
 <dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>5.12.1</version>
<scope>test</scope>
</dependency>
            (<= 5.11),
 <dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>5.8</version>
<scope>test</scope>
<classifier>jdk15</classifier>
</dependency>
 
     classifier     ,   maven         
 <artifactId>-<version>-<classifier>.<packaging>。(           jar ,   sources  javadoc,    <artifactId>-<version>-<classifier>-<type>.<packaging>,  <type>     sources  javadoc)。        ,testng maven            :
testng-5.8-jdk15.jar
classifier               jdk   。
2).      Junit,        : 
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.1</version>
<scope>test</scope>
</dependency>
 
2.     
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.10</version> <configuration> <parallel>methods</parallel> <threadCount>10</threadCount> </configuration> </plugin> 
          ,              ,             。                    mvn test  mvn surefire:test,            (src/test/java)    ,      *Test.java,            。 
              ,              ,      jmockit,              ,          ,           ,       ?      。 
3.     
 
parent pom.xml       : 
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <testNGArtifactName>com.alibaba.external:test.testng</testNGArtifactName> <argLine>-javaagent:"${settings.localRepository}/com/alibaba/external/test.jmockit/0.999.10/test.jmockit-0.999.10.jar"</argLine> <useSystemClassLoader>true</useSystemClassLoader> <testFailureIgnore>true</testFailureIgnore> <parallel>false</parallel> <forkMode>once</forkMode> <suiteXmlFiles> <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile> </suiteXmlFiles> </configuration> </plugin> 
             
     ,       configuration  。        : 
testNGArtifactName       testng jar    artifactId 
argLine     jvm  ,                   jvm     
useSystemClassLoader  
testFailureIgnore                       
  forkMode 

Maven , maven surefire fork 。forkmode , 。
forkMode “never”, “once”, “always” “pertest”。
pretest: , JVM , , hudson

once: 한 프로 세 스에 서 모든 테스트 를 진행 합 니 다.once 는 기본 설정 이 며, Hudson 에서 계속 돌아 올 때 기본 설정 을 사용 하 는 것 을 권장 합 니 다.
 always:             ,Junit4.7         ,surefire     2.6        ,   threadCount   ,          。    parallel      。  :5。
 <forkMode>always</forkMode>
 <parallel>methods</parallel> 

4
suiteXmlFiles                    ,          。 
         src/test/resources/testng.xml,                  ,        ,  permission   testng.xml,        。
testng.xml     :
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
 
<suite name="plan-project-test">
<test name="plan-project-test">
<packages>
<package name="com.alibaba.lp.permission.dal.cache.test" />
<package name="com.alibaba.lp.permission.dal.impl.test" />
</packages>
</test>
</suite>
           package      ,           ,                  。
          class:
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My test suite">
<test name="testing">
<classes>
<class name="TestNGTest1" />
<class name="TestNGTest2" />
</classes>
</test>
</suite>
        group:
<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
<suite name="My test suite">
<test name="testing">
<groups>
<run>
<include name="method1"/>
</run>
</groups>
<classes>
<class name="TestNGTest5_2_0" />
</classes>
</test>
</suite>
  suite   ,        google suite       。
    ,       ,         parent pom.xml  ,                ,                testng.xml  。                  ,             ?
  1, configuration    : 
<configuration> <skipTests>true</skipTests> </configuration>  
     ,        parent pom.xml   ,                 。 
     mvn install -DskipTests  mvn install -Dmaven.test.skip=true      。 
  2,           pom.xml     property,  permission   web  pom: 
<parent> <groupId>com.alibaba.lp.app</groupId> <artifactId>permission.parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <artifactId>permission.web.perm</artifactId> <name>permission web perm project</name> <properties> <maven.test.skip>true</maven.test.skip> </properties> 
 
<properties> <skipTests>true</skipTests> </properties> 
    ,     maven.test.skip skipTests    

maven. test. skip 은 많은 플러그 인, 예 를 들 어 Surefire, Failsafe 와 Compiler Plugin 에서 지원 되 고 skipTests 역할 은 같 지만 적용 범위 가 좀 작 을 수 있 습 니 다. (저 는 skipTests 를 사용 하 는 것 에 익숙 합 니 다. 짧 기 때 문 입 니 다)
 
   
使用文件指定include和exclude的方式我比较支持,但是如果你不喜欢这种方式那么可以去掉suiteXmlFiles这段配置改用以下配置来管理:
<configuration> <includes> <include>**/Test.java</include> </includes>
<excludes>
<exclude>**/TestCase.java</exclude>
</excludes> </configuration>
surefire            ,     ,     
http://maven.apache.org/plugins/maven-surefire-plugin/examples/inclusion-exclusion.html        。 
4.     
    surefire    ,  mvn test,       eclipse  testNG            。                   。       mvn test >result.txt,     result.txt       。testNG            ,         。

좋은 웹페이지 즐겨찾기