初始化Junits中的只读对象的最佳方法

时间:2018-07-02 15:24:12

标签: java junit mockito powermock powermockito

我有一个只读类,它将由Jackson初始化。我将给出一个供API使用的jar,并且不希望用户为该对象设置属性。

class ReadOnlyClass {
    private String value;
    public String getValue() {
        return this.value;
    }
}

现在必须将此对象传递给另一个服务以执行其他工作。

我想为此服务编写Junit。如何初始化该对象。

我听说使用反射是一种不好的做法。在powermock / mockito或我可以使用的任何其他库中是否有任何实用程序。

2 个答案:

答案 0 :(得分:2)

  

powermock / mockito或我可以使用的任何其他库中是否有任何实用程序。

通过这种方式,

class SomeService{
    public void doSomeTask(ReadOnlyClass roc){
      // Some logic
    }

}

class SomeServiceTest{

   @Mock
   private ReadOnlyClass readOnlyClass;

@autowired
   private SomeService someService;

   @Test
   public void testDoSomeTask(){
      when(readOnlyClass.getValue())
                .thenReturn("some value");
      someService.doSomeTask(readOnlyClass);
   }
}

答案 1 :(得分:1)

  1. 如果可以修改ReadOnlyClass,则可以创建构造函数。
  2. 您可以准备json并使用Jackson进行反序列化