2016-02-16 17 views
12

私はCoberturaがJUnitとどのように協力しているのか理解できません。私が理解したように、coberturaはコンパイルされたバイトコードを変更し、このバイトコードに独自のコマンドを挿入します。 OK。その後、Junitフレームワークを実行し、実行するためのテストを行います。コヴェルトゥラがどのコマンドを実行したかという情報を誰がどのような時点で説明できるのでしょうか?CoberturaはJUnitとどのように連携しますか?

答えて

7

Coberturaは、汎用バイトコード操作および解析フレームワークであるASMを使用します。 Javaコードの各行には、既存のクラスに3行が追加されて、生成されるレポートの項目が数えられます。 Coberturaがクラスパスに含まれ、正しく設定され、単体テストを実行すると、cobertura.serというデータファイルが生成され、xmlまたはhtmlレポートを生成します。 Mavenを有する:

基本的な使用法http://www.mojohaus.org/cobertura-maven-plugin/usage.html

+0

にあります。ありがとうございました。しかし、私は理解していない - 私たちはcoberturaではなくjunitを実行します。どのようにこれらの3行から追加されたコードレポートが生成されますか?この3行のコードのそれぞれは、cobertura.serに書き込まれますか? –

+0

ユニットテストを実行すると、Coberturaは自動的に計装されます。 POM(Mavenを使用している場合)またはbuild.xmlファイル(ANTを使用している場合)で設定されている場合、自動的に発生するラップアラウンドの種類です。直接実行しているわけではありませんが、正しく設定されていればMavenプラグイン経由で呼び出されています。 HTH – Griff

2

Coberturaのであるとテストスイートの実行時に到達されていないどの行ログインするために余分な声明のバイトコードを計測することにより、テストを監視します。

Coberturaは、テストされた行数とテストされた分岐数の両方でカバレッジを計算します。最初のパスでは、これらの2つの違いはあまり重要ではありません。 Coberturaはまた、クラスのMcCabeの循環的複雑さの平均を計算します。

これはPOMで構成することができますMavenを使用している場合:

<taskdef classpathref="cobertura.classpath" resource="tasks.properties"/> 

リファレンスant-用:

<plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>cobertura-maven-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <formats> 
       <format>html</format> 
       <format>xml</format> 
      </formats> 
     </configuration> 
    </plugin> 

ANTを使用している場合には、build.xmlファイルにtaskdef文で構成することができますcoberturaの統合は、 https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference

+0

ありがとうございます。しかし、問題は、mavenやantでcoberturaを実行する方法ではありません。問題は、コベルトゥーラがジュニットとどのように協力しているかです。 –

関連する問題