2014-12-24 1 views
0

우리 모듈은 다중 모듈 프로젝트이며 clover2 : instrument를 사용하여 계측 된 팻말을 생성합니다. 우리는 명령 줄에서 계측 항아리를 사용하여 기능 테스트 코드 커버리지를 평가, 모든 단계는 아래에 언급 :클로버 3.1.8의 널 포인터 예외로 유닛 테스트가 실패하지만 모두 클로버로 깨끗하게 처리됩니다. 4.0.2

  1. MVN 클린 설치
  2. MVN -P 계측 clover2 : 악기
  3. 실행 기능 테스트
  4. MVN -P 계측 clover2 :
  5. MVN -P 계측 clover2 집계 : 클로버 사이트

모든 단위 테스트는 위스콘신 통과 클로버 버전 3.1.8이 사용되면 NPE와 함께 실패합니다. 이전 버전은 상업용 라이센스가 있고 최신 버전이 아니기 때문에 사용하고 싶습니다. 친절히 도와주세요.

I 로그를 공유 할 수 없어 내 조직 정책에 위배 될 수 있습니다. 로그에서 추가 스택을 추가 발췌

Tests run: 6, Failures: 6, Errors: 0, Skipped: 0, Time elapsed: 0 sec <<< FAILURE! 
com.***.*.*.*.*.drools.*.*************UnitTest.testKnowledgeAgentInitialization() Time elapsed: 0 sec <<< FAILURE! 
java.lang.NullPointerException 
at com.***.*.*.*.*.drools.*.*************UnitTest.testKnowledgeAgentInitialization(*************UnitTest.java:149) 

Parent POM for clover: 
<profiles> 
    <profile> 
     <id>instrumentation</id> 
     <activation> 
      <property> 
       <name>instrumentation</name> 
      </property> 
     </activation> 
     <dependencies> 
     <dependency> 
       <groupId>com.atlassian.clover</groupId> 
       <artifactId>clover</artifactId> 
       <version>${version.clover}</version> 
      </dependency> 
     </dependencies> 
     <build> 
     <plugins> 
      <plugin> 
       <groupId>com.atlassian.maven.plugins</groupId> 
       <artifactId>maven-clover2-plugin</artifactId> 
       <version>${version.clover}</version> 
       <configuration> 
        <license>${clover.license}</license> 
        <includesTestSourceRoots>false</includesTestSourceRoots> 
       </configuration> 
      <executions> 
        <execution> 
         <id>site</id> 
         <phase>pre-site</phase> 
         <goals> 
          <goal>aggregate</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
     </build> 
    </profile> 

We are using Surefire to run Unit tests 
    <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.14.1</version> 
       <configuration> 
        <includes> 
         <include>**/*UnitTest.java</include> 
        </includes> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>test</phase> 
         <goals> 
          <goal>test</goal> 
         </goals> 
         <configuration> 
          <testNGArtifactName>none:none</testNGArtifactName> 
          <reportsDirectory>${project.build.directory}/surefire-reports/testng</reportsDirectory> 
         </configuration> 
        </execution> 
        <execution> 
         <id>test-testng</id> 
         <phase>test</phase> 
         <goals> 
          <goal>test</goal> 
         </goals> 
         <configuration> 
          <junitArtifactName>none:none</junitArtifactName> 
          <reportsDirectory>${project.build.directory}/surefire-reports/junit</reportsDirectory> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 

를 공유하는 것은 정말 많은 정보를

실행 닷컴을주지 않지만. .air.supply.. .drools.ruleengine.ApplyQueryValueThrottleEngineUnitTest 테스트를 실행했습니다 : 4, 오류 : 4, 오류 : 0, 건너 뛰기 : 0, 경과 시간 : 0.27 초 < < < FAILURE! com. .air.supply. ..drools.ruleengine.ApplyQueryValueThrottleEngineUnitTest.testKnowledgeAgentInitialization() 경과 시간 : 0.002 초 < < < 오류! java.lang.NullPointerException at com. .air.supply.. *. drools.ruleengine.ApplyQueryValueThrottleEngineUnitTest.testKnowledgeAgentInitialization (ApplyQueryValueThrottleEngineUnitTest.java:145)

닷컴. .air.supply.. .drools.ruleengine.ApplyQueryValueThrottleEngineUnitTest.testNoM hingRule() 경과 시간 : 0.266 초 < < < 오류! java.lang.NullPointerException at com. .air.supply.. .drools.ruleengine.ApplyQueryValueThrottleEngineUnitTest.testNoM hingRule (ApplyQueryValueThrottleEngineUnitTest.java:124)

닷컴. .air.supply.. .drools.ruleengine.ApplyQueryValueThrottleEngineUnitTest.testM hingRule() 경과 시간 : 0 초 < < < 오류! java.lang.NullPointerException at com. .air.supply.. .drools.ruleengine.ApplyQueryValueThrottleEngineUnitTest.testM hingRule (ApplyQueryValueThrottleEngineUnitTest.java:135는)

클로버의 4.0 릴리스 노트에 명시된 바와 같이
+0

우리가 아는 건 어떤 클래스의 라인 149에서 NPE 있다는 것입니다. 이 행의 내용이나 예외의 스택 추적에 대한 정보가 없습니다. 어떻게 우리가 도울 것으로 기대합니까? – yole

+0

@yole 실패한 테스트의 로그를 확장 중입니다. clover2를 실행하는 동안 이러한 테스트가 실패합니다. – Ankit

+0

아직 스택 추적이 없으며 코드가 여전히 도움이되지 않습니다. – yole

답변

0

, 클로버 4.x의 클로버 3.x를 바이너리 호환되지 않습니다따라서 Clover 3.x를 사용하는 코드와 런타임시 Clover 4.x JAR을 사용하여 코드를 계측하지 않아야합니다 (반대의 경우도 마찬가지입니다).

특히 빌드 작업 영역이나 ~/.m2 로컬 캐시에 잘못된 클로버 버전으로 인스톨 된 JAR 파일 (이전 빌드의 남은 부분)이 포함되지 않도록하십시오.

작업 공간에서 'mvn clean'을 실행하십시오. 모든 '* -clover.jar'파일을 ~/.m2에서 삭제하십시오. Maven의 'install'목표와 함께 'clover2 : setup'을 사용하는 경우 인스트루먼트 코드가 포함 된 이름에 '-clover'접미사가없는 JAR 파일도 제거하십시오. JAR에 인스트루먼트 된 코드가 포함되어 있는지 인식하는 방법은 *로 표시됩니다. 이름에 '$ __ CLR'이 포함 된 클래스 파일).

은 참조 : https://confluence.atlassian.com/display/CLOVER/Clover+4.0+Release+Notes