首页 > 解决方案 > 在junits中初始化只读对象的最佳方法

问题描述

我有一个将由杰克逊初始化的只读类。我将分发 API 使用的 jar,并且不希望用户为对象设置属性。

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

现在这个对象必须被传递给另一个服务来做一些其他的工作。

我想为此服务编写 Junits。我如何初始化这个对象。

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

标签: javajunitmockitopowermockpowermockito

解决方案


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);
   }
}

推荐阅读