2017-02-15 8 views
2

これまでは、パッケージ名やクラス名によっては、特定のクラスを除外しています。カバレッジから以下のような列挙型を除外できる方法はありますか?コードカバレッジからenumクラスを除外しますか?

package com.*; 

public enum Quality { 
    high,normal,low; 
} 

対象範囲私は、JUnitとJMockitでmaven-surefire-pluginを使用しています。そして、私のカバレッジ設定は次のようになります

<build> 
<plugins> 
.... 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.18.1</version> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.maven.surefire</groupId> 
      <artifactId>surefire-junit4</artifactId> 
      <version>2.18.1</version> 
     </dependency> 
    </dependencies> 
    <configuration> 
     <systemPropertyVariables> 
      <coverage-excludes>com.test.*,*IT.java</coverage-excludes> 
     </systemPropertyVariables> 
    </configuration> 
</plugin> 
.... 
</build> 
<dependencies> 
    .... 
     <dependency> 
      <groupId>org.jmockit</groupId> 
      <artifactId>jmockit</artifactId> 
      <version>1.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jmockit</groupId> 
      <artifactId>jmockit-coverage</artifactId> 
      <version>1.17</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
     </dependency> 
    ....  
    </dependencies> 
+0

なぜ列挙型を除外しますか?あなたのプロダクションコードのいくつかがこれらの列挙型を使用している場合は、必ずそれらがカバーされます。そうでなければ、特定の値が使用されていないことを示します。 – GauravJ

答えて

1

除外プロパティは正規表現を受け入れます。あなたはすべての列挙型は、QualityEnum.javaとして自分の名前に共通のパターンを有するように、アプリケーションのコードの慣例に従うことができ、その後、あなたは除外

<exclude>%regex[*Enum.java], com.test.*</exclude> 

に正規表現フィルタを適用することができることを確認して、他の非列挙クラスを作成しますこの慣習を避けてください。代わりに、列挙のために各モジュールに専用のサブパッケージを用意し、サブパッケージを除外します。

+0

はい私はこれを行うことができます。しかし、私はその内容に応じて除外したいと思っています。除外したい場合は、抽象クラスを紹介し、別の投稿修正パターンを紹介しますか? – mavi

+1

私は、これがInstanceOf操作@maviを行うことができるsurefire用の新しい除外フィルタ実装を記述することになると思います –

関連する問題