2016-08-28 3 views
0

Согласно документации плагина Surefire, мы можем указать провайдера как JUnit 4, JUnit-47 и другие.Разница между провайдером Surefire и бегуном, указанная с помощью аннотации @RunWith на уровне класса

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.17</version> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.maven.surefire</groupId> 
      <artifactId>surefire-junit47</artifactId> 
      <version>2.17</version> 
     </dependency> 
    </dependencies> 
</plugin> 

Пусть у меня есть класс, как указано ниже:

@RunWith(PowerMockRunner.class) 
public class MyListener{ 

    @Test 
    public void testProp() { 

    } 
} 

При запуске Maven безошибочный, он будет использовать junit47runner или PowerMockRunner запустить тестовый пример?

ответ

0

В вашем случае @RunWith является JUnit аннотации (который соответствует тому, что происходит в вашем XML-конфигурации, так вы можете оставить, что XML-зависимости конфигурации часть и не беспокоиться о том, что).

JUnit бегун в свою очередь запускает ваш PowerMockRunner. Таким образом, ваш powermock будет включен, но вы все еще можете использовать JUnit такие вещи, как @Rule.

Также, поскольку junit 4.7 рекомендуется вместо @RunWith(PowerMockRunner.class) использовать JUnit powermock rule.

-

Цитирование surefire doc. Для общей части вопроса.

В некоторых случаях может быть желательно вручную переопределить такой выбор. Это можно сделать, добавив необходимого провайдера в качестве зависимости от верного плагина.

Это означает, что при правильной установке обязательно учитывается конфиден.