2013-09-05 5 views
12

Jakie słoiki muszę dodać do mojego pom.xml, aby PowerMock współpracował z Mockito? Mam następujące zależności:Które artefakty Maven powinienem użyć do importowania PowerMocka?

<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> 

ale kiedy dodać @PrepareForTest adnotacji na poziomie klasy, Eclipse nie może go znaleźć, ale można go znaleźć PowerMockito. Czego mi brakuje?

Odpowiedz

19

Według strony Mockito_Maven na wiki PowerMock, użyj tego:

<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 wydaje się być "utility classes only", gdzie trzeba jeszcze bibliotek podstawowych przewidzianych w powermock-module-junit4.

+1

Dodałem słoik powermock-module-juint4 do ścieżki klasy, ale nadal widzę ten sam problem: >>> wiele znaczników w tej linii \t - Błąd składni, wstaw "Identyfikator enum", aby zakończyć \t EnumHeaderName \t - Błąd składni, włóż „EnumBody”, aby zakończyć EnumDeclaration \t - PrepareForTest nie mogą być rozwiązane do rodzaju \t - wartość atrybutu nie jest zdefiniowana dla danego typu adnotacji \t PrepareForTest – user86834

+0

odpowiedź Jeffa jest prawidłowa; czy możesz zamieścić specjalny kod wyrzucając wyjątek? –

+1

Czy na pewno nie są potrzebne żadne inne zależności? Nie ma wyjątków dotyczących wyrzucania kodu. Kiedy dodaję '@ PrepareForTest' do mojej klasy testowej, Eclipse skarży się, że nie może znaleźć' @ PrepareForTest'. Sprawdziłem źródło "powermock-module-junit4' i' powermock-api-mockito' i nie widzę adnotacji '@ PrepareForTest'. Czy możesz mi powiedzieć, jaki jar zawiera @PrepareForTest w wersji 1.4.11? – user86834

1

Jesteś pisanie:

@PrepareForTest(Class.class); 

Zamiast:

@PrepareForTest(Class.class) 

miałem dokładnie ten sam problem i rozwiązać go w ten sposób.

+0

Dobry IDE krzyczy na ciebie za ten błąd składni. Jeśli dodać średnik (;) po adnotacji Eclipse narzeka 'Wiele znaczników na tej linii \t - błąd składni, włóż„enum Identifier”, aby zakończyć EnumHeaderName \t - błąd składni, włóż„EnumBody”, aby zakończyć EnumDeclaration' @ l3k – javaPlease42