如何存根具有受保护方法的扩展类

时间:2019-03-07 02:51:19

标签: junit java-8 powermock powermockito

我有一个不太好的旧代码。 我想为此编写一个测试,而不更改代码中的任何内容。 因此,我尝试使用Powermock,但是扩展类的模拟继续进入真实的类。

我该如何测试?甚至无需更改代码就可以吗?

public class A extends B {

    public static MyObject process(final List<String> myList) {
        List<Integer> myIntList = getSomething(123);
        MyObject obj = new MyObject();

        return obj.get(myIntList);
    }
}

public class B {
    protected static MySource MY_SOURCE = new MySource();

    protected static List<Integer> getSomething(String id) {
        List<Integer> intList = new ArrayList<>();
        intList.add(123);
        return intList
    }
}


@RunWith(PowerMockRunner.class)
@PrepareForTest({B.class})
public class ATest {

    @InjectMocks
    private A aClass;

    @Before
    public void setUp() {
        initMocks(this);

        PowerMockito.when(B.class, "getSomething", "123").thenReturn(Collections.EMPTY_LIST());
    }

    @Test
    public void testProcess() {
        List<String> inputList = new ArrayList<>();
        inputList.add("mylist1");
        MyObject result = aClass.process(inputList);

        assertNotNull(result);
    }
}

0 个答案:

没有答案