如果一個 Java 類在初始化時會有外部依賴,這就給單元測試創建它的實例時造成困難。當然被測試類可以改造爲依賴全部構造時注入或創建實例後延遲注入,這裏不考慮這種改造。單說下面的例子
public class OrderService {
private PriceInquiry priceInquiry = new PriceInquiry();
.........
public double totalPrice() {
return priceInquiry.retrieve(....);
}
}
假如上面的代碼是不能改動的,並且在 new PriceInquiry()
時依賴於網絡環境,所以單機情況不能創建成功。也就使得測試時試圖
new OrderService();
會失敗。並且試圖用 Mockito 的 @InjectMocks
也不行 閱讀全文 >>