2013-09-05 1 views
12

Какие банки необходимо добавить к моему pom.xml, чтобы получить PowerMock, работающий с Mockito? У меня есть следующие зависимости:Какие артефакты Maven следует использовать для импорта PowerMock?

<dependency> 
    <groupId>org.mockito</groupId> 
    <artifactId>mockito-all</artifactId> 
    <version>1.9.0</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.powermock</groupId> 
    <artifactId>powermock-api-mockito</artifactId> 
    <version>1.4.11</version> 
    <scope>test</scope> 
</dependency> 
<dependency> 
    <groupId>org.powermock</groupId> 
    <artifactId>powermock-api-support</artifactId> 
    <version>1.4.11</version> 
    <scope>test</scope> 
</dependency> 

, но когда я добавляю @PrepareForTest аннотацию на уровне класса, Eclipse не может найти его, но он может найти PowerMockito. Какую банку мне не хватает?

ответ

19

Согласно Mockito_Maven страницы на PowerMock вики, используйте:

<properties> 
    <powermock.version>1.6.6</powermock.version> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>org.powermock</groupId> 
     <artifactId>powermock-module-junit4</artifactId> 
     <version>${powermock.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.powermock</groupId> 
     <artifactId>powermock-api-mockito</artifactId> 
     <version>${powermock.version}</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

powermock-api-support, кажется, «utility classes only», где вы все еще нужны основные библиотеки, представленные в powermock-module-junit4.

+1

Я добавил powermock-модуль-juint4 баночку путь к классам, но все еще видя ту же проблему: >>> Несколько маркеров в этой строке \t - Ошибка синтаксиса, введите «Идентификатор перечисления» для завершения \t EnumHeaderName \t - Синтаксическая ошибка, вставить «EnumBody», чтобы завершить EnumDeclaration \t - PrepareForTest не может быть разрешен к типу \t - Значение атрибута не определено для типа аннотаций \t PrepareForTest – user86834

+0

ответ Джеффа является правильным; можете ли вы опубликовать конкретный код, выдающий исключение? –

+1

Вы уверены, что никаких других зависимостей не требуется? Исключений для исключения кода не существует. Когда я добавляю '@ PrepareForTest' в свой тестовый класс, Eclipse жалуется, что он не может найти' @ PrepareForTest'. Я просмотрел источник 'powermock-module-junit4' и' powermock-api-mockito', и я не вижу аннотации '@ PrepareForTest'. Можете ли вы рассказать мне, что содержит jar @PrepareForTest в версии 1.4.11? – user86834

1

Вы сочинительство:

@PrepareForTest(Class.class); 

Вместо:

@PrepareForTest(Class.class) 

У меня была точно такая же проблема, и решить его таким образом.

+0

Хорошая IDE будет кричать на вас за эту синтаксическую ошибку. Если добавить точку с запятой (;) после аннотации Eclipse, жалуется 'Множественные маркеры на этой линии \t - ошибка синтаксиса, вставить«перечисление Identifier»для завершения EnumHeaderName \t - ошибка синтаксиса, вставить«EnumBody», чтобы завершить EnumDeclaration' @ l3k – javaPlease42

Смежные вопросы