2

現在、モジュールレベルでJUnitの総カバレッジを最小限に抑えています。だから、もし総ラインカバレッジがある値(私の場合は80%)を下回っていれば、ビルドは失敗します。そのために、私はmaven-surefire-pluginをmaven-enforcer-plugin、JUnitとJMockitで使用しました。 pomファイルの一部は次のようになります。クラスレベルでJUnitの総カバレッジを最低限に抑えますか?

<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-outputDir>${basedir}/target/coverageReport</coverage-outputDir> 
      <coverage-output>html,merge</coverage-output>    
      <coverage-check>80</coverage-check> 
     </systemPropertyVariables> 
    </configuration> 
</plugin> 
<plugin> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>coverage.check</id> 
      <goals> 
       <goal>enforce</goal> 
      </goals> 
      <phase>test</phase> 
      <configuration> 
       <rules> 
        <requireFilesDontExist> 
         <files> 
          <file>coverage.check.failed</file> 
         </files> 
        </requireFilesDontExist> 
       </rules> 
      </configuration> 
     </execution> 
    </executions> 
</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> 

私の問題は、一部のクラスは非常に80%以下の範囲とビルドがまだある限り、合計カバレッジがない80%を下回っているとして渡すかもしれない、ということです。

したがって、クラスレベルで私のカバレッジを適用する方法はありますか?

答えて

2

あなたに有害な無回答を与える:それをしないでください。不足している電話番号でビルドが失敗することはありません!

技術的な手段を使用してソーシャル問題を解決しようとしています。

あなたの本当の問題は、特定のコード品質を達成したいということです。あなたが準拠していないときに人を罰することによってそれを得ると思います。それは実際には機能しません。遅かれ早かれ、人々はこのアイディアを迂回し始めるでしょう。彼らは「ただビルドを幸せにする」ための素早い方法を探します。妥当なコードカバレッジを求めることによってのコードを改善するという考えを無視してください。または、現在のカバレッジ目標よりも、新しい機能/修正が現在重要になっていることを指摘するマネージャーがあなたに来ています。 それでは?チェックを一時的に無効にしますか?低い番号を許可しますか?

もちろん、単体テストの測定範囲は、のです。これを頻繁に行う必要があります。また、開発者がこの情報に簡単にアクセスできるようにする必要があります(たとえば、ダッシュボードに配置するなど)。 DEVチームに特定の目標をコミットするよう依頼することも公正です。しかし、強制誰もが喉を覆い隠してしまって...うまくいかない。まあ

(:あなたは開発者だけでなく、あなたのアイデアを受け入れますが、完全にあなたがサポートしているハイクラスの環境で作業している場合は、その後、物事は異なる場合があります。しかし、あなたがそのような環境で生活するならば。 、高いカバレッジはそれ自体で、それを強制することなく来る)。

+0

+1本当にありがとうございます。そしてあなたに完全に同意します。実際、私はこのアイデアを答えにしています。しかし、執行が唯一の選択肢である時があります。ですから、私はもっと技術的な解決策をとっていきます。しかし、本当にいい説明と答え。 – mavi

+0

あなたは大歓迎です。それであなたに運が欲しい。うまくいけば、誰があなたにあなたが探している "本当の技術的な"答えを与えることができるのでしょうか? – GhostCat

関連する問題