2013-09-05 70 views
12

Tôi cần thêm những lọ nào vào pom.xml để PowerMock làm việc với Mockito? Tôi có sự phụ thuộc như sau:Tôi nên sử dụng các tạo phẩm Maven nào để nhập 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> 

nhưng khi tôi thêm các @PrepareForTest chú thích ở cấp lớp, Eclipse không thể tìm thấy nó, nhưng nó có thể tìm thấy PowerMockito. Tôi đang thiếu cái gì?

Trả lời

19

Theo Mockito_Maven trang trên wiki PowerMock, sử dụng này:

<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 có vẻ là "utility classes only", nơi mà bạn vẫn cần các thư viện lõi cung cấp trong powermock-module-junit4.

+1

Tôi đã thêm jar powermock-module-juint4 vào classpath nhưng vẫn thấy cùng một vấn đề: >>> Nhiều điểm đánh dấu tại dòng này \t - Lỗi cú pháp, chèn "Mã định danh enum" để hoàn thành \t EnumHeaderName \t - Cú pháp lỗi, chèn "EnumBody" để hoàn tất EnumDeclaration \t - PrepareForTest không thể giải quyết cho một loại \t - Giá trị thuộc tính là undefined cho các loại chú thích \t PrepareForTest – user86834

+0

câu trả lời của Jeff là đúng; bạn có thể đăng mã cụ thể ném ngoại lệ không? –

+1

Bạn có chắc chắn không cần phụ thuộc khác không? Không có mã ném ngoại lệ. Khi tôi thêm '@ PrepareForTest' vào lớp thử nghiệm của mình, Eclipse phàn nàn rằng nó không thể tìm thấy' @ PrepareForTest'. Tôi đã xem qua nguồn của 'powermock-module-junit4' và' powermock-api-mockito' và tôi không thể thấy chú thích '@ PrepareForTest'. Bạn có thể cho tôi biết jar chứa @PrepareForTest trong phiên bản 1.4.11 không? – user86834

1

Bạn đang writting:

@PrepareForTest(Class.class); 

Thay vì:

@PrepareForTest(Class.class) 

Tôi có chính xác cùng một vấn đề và giải quyết nó theo cách đó.

+0

Một IDE tốt sẽ hét lên với bạn vì lỗi cú pháp này. Nếu bạn thêm dấu chấm phẩy (;) sau khi chú thích Eclipse than phiền 'Nhiều dấu tại dòng này \t - Lỗi cú pháp, chèn" mã định danh enum "để hoàn thành EnumHeaderName \t - Lỗi cú pháp, chèn" EnumBody "để hoàn thành EnumDeclaration' @ l3k – javaPlease42