Is it possible to use partial mocking for private static methods in PowerMock?

前端 未结 3 1753
星月不相逢
星月不相逢 2020-12-08 07:55

From the examples on the PowerMock homepage, I see the following example for partially mocking a private method with Mockito:

@RunWith(PowerMockRunner.class)         


        
3条回答
  •  离开以前
    2020-12-08 08:08

    After doing a bit more research, it seems that PowerMockito.spy() and PowerMockito.doReturn() are what is required here:

    package com.richashworth.powermockexample;
    
    import org.junit.Before;
    import org.junit.BeforeClass;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.powermock.api.mockito.PowerMockito;
    import org.powermock.core.classloader.annotations.PrepareForTest;
    import org.powermock.modules.junit4.PowerMockRunner;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import static org.junit.Assert.assertEquals;
    
    
    @RunWith(PowerMockRunner.class)
    @PrepareForTest({DataProvider.class})
    public class ResultsWriterTest {
    
        private static List mockData = new ArrayList();
        private ResultsWriter resultsWriter;
    
        @BeforeClass
        public static void setUpOnce() {
            final String firstLine = "Line 1";
            final String secondLine = "Line 2";
            mockData.add(firstLine);
            mockData.add(secondLine);
        }
    
        @Before
        public void setUp() {
            resultsWriter = new ResultsWriter();
        }
    
        @Test
        public void testGetDataAsString() throws Exception {
            PowerMockito.spy(DataProvider.class);
            PowerMockito.doReturn(mockData).when(DataProvider.class, "readFile");
    
            final String expectedData = "Line 1\nLine 2\n";
            final String returnedString = resultsWriter.getDataAsString();
    
            assertEquals(expectedData, returnedString);
        }
    
    }
    

    For further details and the complete code listing, check out my blog post here: https://richashworth.com/post/turbocharge-your-mocking-framework-with-powermock/

提交回复
热议问题