2014-05-13 14 views

Trả lời

1

Bạn có thể sử dụng một khuôn khổ cho phép thực hiện các cuộc gọi nhạo đến các nhà thầu như JMockit hoặc Powermock.

Powermock

JMockit

3

Mocking hoạt động trên phương phápgiao diện, không lĩnh vực; hơn nữa, nó hoạt động trên thành viên thể hiện, không phải thành viên tĩnh. Mockito và Powermock không phải là công cụ thích hợp để giải quyết vấn đề này.

Mặc dù bạn có thể use reflection to set final fields, bạn đang làm việc hiệu quả xung quanh tuyên bố của riêng mình và phải tuân theo các giới hạn và nguy cơ của JLS 17.5.3.

Một thiết kế tốt hơn sẽ được viết lại phương pháp trong hệ thống được kiểm tra để tiêm phụ thuộc SomeClass của nó:

public void methodUnderTest() { 
    methodUnderTest(MyClass.field); 
} 

/** Package-visible for testing. Test this method instead. */ 
void methodUnderTest(SomeClass someClass) { 
    someClass.firePhotonTorpedoes(); 
} 
Các vấn đề liên quan