使用返回整数列表的power mock测试私有方法

use*_*196 20 java easymock powermock

我有一个私有方法,它取一个整数值列表返回一个整数值列表.我如何使用power mock来测试它.我是powermock的新手.可以用简单的模拟进行测试..?怎么样..

JB *_*zet 27

文档中,在"Common - Bypass encapsulation"一节中:

使用Whitebox.invokeMethod(..)来调用实例或类的私有方法.

您也可以在同一部分中找到示例.


Min*_*nas 7

这是一个完整的例子如何做到这一点:

import java.util.ArrayList;
import java.util.List;

import org.junit.Assert;
import org.junit.Test;
import org.powermock.reflect.Whitebox;

class TestClass {
    private List<Integer> methodCall(int num) {
        System.out.println("Call methodCall num: " + num);
        List<Integer> result = new ArrayList<>(num);
        for (int i = 0; i < num; i++) {
            result.add(new Integer(i));
        }
        return result;
    }
}

 @Test
 public void testPrivateMethodCall() throws Exception {
     int n = 10;
     List result = Whitebox.invokeMethod(new TestClass(), "methodCall", n);
     Assert.assertEquals(n, result.size());
 }
Run Code Online (Sandbox Code Playgroud)