首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Whitebox不认识我的私人方法?

为什么Whitebox不认识我的私人方法?
EN

Stack Overflow用户
提问于 2015-08-06 17:08:51
回答 1查看 3.9K关注 0票数 1

我有一个方法,我正试图在一个名为MyUtil的公共最终类中进行测试:

代码语言:javascript
复制
private static String getStringFromArray(String[] array) {
    String tempString = "";

    if (array != null && array.length > 0) {
      for (int i = 0; i < array.length - 1; i++) {
        tempString += array[i] + ",";
      }
      tempString += array[array.length - 1];
    }

    return tempString;
}

我有两个测试方法,我已经使用Whitebox设置它们来调用这个私有方法:

代码语言:javascript
复制
@RunWith(PowerMockRunner.class)
@PrepareForTest(MyUtil.class)
public class MyUtilTests {

@Before
public void setUp() {
   PowerMockito.spy(MyUtil.class);
}
  @Test
  public void getStringFromArrayReturnsEmptyStringIfArrayIsNullTest() throws    Exception {
    String[] arrayOfStrings = null;
    String retVal = Whitebox.invokeMethod(MyUtil.class, "getStringFromArray", arrayOfStrings);

    assertEquals("", retVal);
  }

  @Test
  public void getStringFromArrayReturnsElementsSeparatedByCommasTest() throws Exception {
    String[] arrayOfStrings = new String[]{"A", "B", "C"};

    String retVal = Whitebox.invokeMethod(MyUtil.class, "getStringFromArray", arrayOfStrings);

    assertEquals("A,B,C", retVal);
  }
}

当我运行这些测试时,我会收到一条错误消息,上面写着:

"org.powermock.reflect.exceptions.MethodNotFoundException:找不到具有参数类型的名称“getStringFromArray”的方法: java.lang.String、java.lang.String、java.lang.String

为什么Whitebox在第一个测试中识别方法(以null作为数组),而不识别第二个测试中的方法(其中我有一个实际的数组)?我应该提到我为这个测试类创建的@ the间谍(我需要在其他测试中使用它),以防影响问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-07 08:40:36

在Eclipse中,我在Whitebox.invokeMethod代码行中看到下面的警告

为了调用varargs方法String[] (Class,String,Object.),应该将String[]类型的参数显式转换为Object[]从Whitebox类型。也可以将其转换为varargs调用的对象。

因此,当我在传递参数时通过类型转换将两个测试方法的代码行更改为Object时,测试用例成功执行。

代码语言:javascript
复制
 String retVal = Whitebox.invokeMethod(MyUtil.class, "getStringFromArray", (Object)arrayOfStrings);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31861799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档