2013-06-28 186 views
2

我想在我的单元测试中模拟一个遗留对象。下面是构造函数:带构造函数参数的模拟构造函数对象...对象

public Class LegacyClass{ 
    public LegacyClass(Object... obj) { 
     super(obj); 
    } 
} 

我尝试使用powerMock这样嘲笑它:

whenNew(LegacyClass.class).withParameterTypes(Object.class). 
withArguments(anyString(), anyString()).thenAnswer(new Answer<Object>(){ 
...//Answer impl code 
}); 

这里涉及到的问题:

  1. 我应该把哪个类withParameterTypes()?
  2. 我可以把它放在@Before setup()中吗?
+1

他最近拿起..... – BugsBunny

回答

3

使用Object[].class访问可变参数参数的参数类型:

PowerMockito.whenNew(LegacyClass.class) 
      .withParameterTypes(Object[].class) 
      .withArguments(Mockito.anyString(), Mockito.anyString()) 
      .thenAnswer(new Answer<Object>() { 
       public Object answer(InvocationOnMock invocation) 
         throws Throwable { 
        // your code 
       } 
      }); 

我测试,这个工作也在@Before方法。