簡體   English   中英

模擬由Java中的新運算符創建的對象,而無需使用電源模擬功能

[英]mock an object which created by new operator in java without power mock feature

我想模擬在代碼中使用new運算符創建的對象。 我不想使用電源模擬功能。 我怎么能做到這一點。 我正在將策略模式與責任鏈模式一起用於此示例代碼

ValidationHandlerProcessor validationHandlerProcessor = new ValidationHandlerProcessor();

List<ValidationHandler> dataValidationHandlers = validationHandlerProcessor.getDataValidationHandlers();

dataValidationHandlers.add(new abcHandler());

validationHandlerProcessor.validate(componentInfoInput);

從ValidationHandlerProcessor繼承並創建一個新的類ValidationHandlerProcessorMock,現在在此模擬中使用validate方法或您要模擬的任何方法。

public class ValidationHandlerProcessorMock extends ValidationHandlerProcessor{

    public void validate(args){
       // write mock code here
    }

}

現在在測試文件中使用

ValidationHandlerProcessor validationHandlerProcessor = new ValidationHandlerProcessorMock();

簡單地說:您不能。

模擬new的調用的能力需要轉向PowerMock(ito)或JMockit框架。

真正的答案是:重做您的生產代碼, 不要在這里調用new; 例如由

  • 使用依賴注入在被測類中提供該其他類的實例
  • 使用依賴注入來提供一個工廠 ,該工廠提供所需類的實例(然后工廠是一個可笑的東西,它將返回您想要返回的內容)

長話短說:在使用PowerMock或其他框架之前,請學習如何創建可測試的代碼。 例如,觀看這些視頻

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM