2

次のコードをモックしたい:

int num = MySingelton.getInstance().getA().getB().getC();

偽の番号を返します。PowerMock & EasyMock\Mockito を使用してどうすればよいですか?

4

1 に答える 1

1

はい、可能です。PowerMockito を使用してサンプル コードを作成しました。

シングルトンクラスを作成します..

public class SingletonClassUtil
{
   private static SingletonClassUtil singletonClassUtil;

   private SingletonClassUtil(){}

   private String name;

   public static SingletonClassUtil getInstance()
   {
      if(singletonClassUtil!=null)
      {
          singletonClassUtil = new SingletonClassUtil();
      }
      return singletonClassUtil;
   }

   public String getA()
   {
      return name;
   }
} 

PowerMock を使用してクラスをテストします。

public class SingletonTest
{
    public void testSingleton() throws Exception
    {
        PowerMockito.suppress(PowerMockito.constructor(SingletonClassUtil.class));
        PowerMockito.mockStatic(SingletonClassUtil.class);
        SingletonClassUtil singletonClassUtil =  PowerMockito.mock(SingletonClassUtil.class);

        PowerMockito.when(singletonClassUtil.getA()).thenReturn("A");
        System.out.print(singletonClassUtil.getA());
        // add your code here to access inner class methods  
    }
}

それがあなたを助けるなら、私に投票してください

于 2013-06-05T22:08:58.267 に答える