2012-03-05 5 views
4

У нас есть emma, настроенный в нашем проекте, который генерирует отчет о покрытии. Вся настройка работала нормально, пока я не ввел PowerMock, чтобы издеваться над некоторыми статическими методами.Эмма-покрытие с Powermock

Когда я комментирую класс с @RunWith (PowerMockRunner.class), emma пытается снова запустить процесс покрытия и вызывает исключение addressbind. Я думаю, что maven surefire разворачивает новую JVM для разных бегунов, и emma пытается снова запустить новый JVM.

Я пробовал с различными вариантами для forfMode, но не помогал. 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/). См. [Run 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

Если вы не указываете версию Эммы плагин в использовании Maven будет по умолчанию

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

Если указать в теге сборки последней версии 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>... 

проблема должна исчезнуть

+0

это действительно помогло – stewenson

0

Bumping эмма версии плагина может работать для обычного проекта Java, но последняя версия Android com.amazon.emma-дроида по-прежнему не имеет исправления ,

Проблема возникает, только если вы используете как минимум два разных JunitClassRunners (например, по умолчанию один и @RunWith (PowerMockRunner.class)). Я столкнулся с той же проблемой, когда начал использовать RobolectricTestRunner. Обходной путь - использовать тот же JunitClassRunner для каждого тестового примера в модуле. Например. используйте @RunWith (PowerMockRunner.class) даже для простых JUnits без любого PowerMock.