2012-03-05 53 views
4

カバレッジレポートを生成するプロジェクトでemmaが設定されています。私がPowerMockを導入していくつかの静的メソッドをモックするまで、全体の設定はうまくいきました。PowermockによるEmmaカバレッジ

@RunWith(PowerMockRunner.class)でクラスに注釈を付けると、emmaは再びカバレッジプロセスを開始しようとし、addressbind例外をスローします。私は、Mavenが確実に別のランナーのために新しいJVMをフォークし、emmaが新しいJVMを再起動しようとしていると思います。

私はsurefire forkModeのためのさまざまなオプションを試しましたが、助けになりません。 Running util.HttpClientFactoryTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.154 sec Running xxx.util.ServiceConnectorUtilTest EMMA: collecting runtime coverage data ... java.net.BindException: Address already in use: JVM_Bind at java.net.PlainSocketImpl.socketBind(Native Method) at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)

これを回避する方法についてのアイデアはありますか?どんな援助も大いに賛成しました。おかげ

+0

[jacoco](http://www.eclemma.org/jacoco/)を使用してください。参照してください[テストフェーズで実行jacoco](http://stackoverflow.com/questions/9531608/which-emma-maven-plugin-should-i-be-using/9533745#9533745) –

+0

私は同じ問題を抱えているこれに対する解決策を見つけましたか? –

+0

https://groups.google.com/forum/?fromgroups#!topic/powermock/FKRGTkYGb9s縫い目が同じ問題 –

答えて

2

あなたがビルドタグに最新バージョン1.2(または1.1)

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.sonatype.maven.plugin</groupId> 
       <artifactId>emma-maven-plugin</artifactId> 
       <version>1.0</version> 
      </plugin> 
     </plugins> 
    </pluginManagement>... 
を指定した場合

<groupId>org.sonatype.maven.plugin</groupId> 
<artifactId>emma-maven-plugin</artifactId> 
<version>1.0</version> 

がデフォルトになりますMavenを利用するにはプラグインエマのバージョンを指定しない場合

問題は、単純なJavaプロジェクトのために働くかもしれないエマプラグインのバージョンをつっぱり

+0

これは本当に助けられました – stewenson

0

消えるはずですが、com.amazon.emma-ドロイドの最新のAndroidバージョンは、まだこの修正プログラムを持っていません。

この問題は、少なくとも2つの異なるJunitClassRunners(たとえば、デフォルトの1つと@RunWith(PowerMockRunner.class))を使用する場合にのみ表示されます。私はRobolectricTestRunnerを使い始めると同じ問題に直面しました。回避策は、モジュール内のすべてのテストケースに対して同じJunitClassRunnerを使用することです。例えば。任意のPowerMockを使用しない単純なJUnitでも@RunWith(PowerMockRunner.class)を使用してください。

関連する問題