模拟在没有power mock功能的情况下由java中的new运算符创建的对象

时间:2017-04-18 05:22:04

标签: java unit-testing mockito

我想模拟一个在代码中使用new运算符创建的对象。我不想使用电源模拟功能。我怎样才能做到这一点。 我正在使用战略模式与责任链模式 我有的示例代码是

ValidationHandlerProcessor validationHandlerProcessor = new ValidationHandlerProcessor();

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

dataValidationHandlers.add(new abcHandler());

validationHandlerProcessor.validate(componentInfoInput);

2 个答案:

答案 0 :(得分:0)

继承自ValidationHandlerProcessor并创建一个新类ValidationHandlerProcessorMock,现在在此模拟器中使用validate方法或您想要模拟的任何方法。

public class ValidationHandlerProcessorMock extends ValidationHandlerProcessor{

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

}

现在在测试文件中使用

ValidationHandlerProcessor validationHandlerProcessor = new ValidationHandlerProcessorMock();

答案 1 :(得分:0)

简单地说:你不能。

模拟调用 new 的功能需要转向PowerMock(ito)或JMockit框架。

真正的答案是:将您的生产代码修改为在此处拨打新电话;例如

  • 使用依赖注入在您的测试类中提供该其他类的实例
  • 使用依赖注入提供工厂,提供您需要的类的实例(然后您的工厂是一个模拟的东西,它会返回您希望它返回的任何内容)

长话短说:在参与PowerMock或其他框架之前,参与学习如何创建可测试的代码。例如,请观看这​​些videos