powermock模拟私有方法

在单元测试中,有时候需要模拟一个类的私有方法,powermock提供了这样的功能

以下是要测试的类

public class CalcService {

       public int increase(int i){
           return i+j(i);
       }
     
       private int j(Integer j){
           return j;
       }
}

 

以下是测试类

import org.easymock.EasyMock;
import org.junit.Test;
import org.powermock.modules.junit4.PowerMockRunner;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import com.tdd.powermock.CalcService;
import static org.junit.Assert.assertTrue;
import static org.powermock.api.easymock.PowerMock.*;

@RunWith(PowerMockRunner.class)
@PrepareForTest(CalcService.class)
public class CalcServiceTest {
    @Test
    public void testIncrease() throws Exception{
        int expected=3;
        CalcService tested = createPartialMock(CalcService.class, "j");
        expectPrivate(tested, "j",1).andReturn(2);
        replay(tested);
        assertTrue(expected==tested.increase(1));
        verify(tested);
        
    }
}

 

这些代码很简单,相信很容易看懂,另外需要的jar包如下,以maven来添加依赖

<dependency>
			<groupId>org.easymock</groupId>
			<artifactId>easymock</artifactId>
			<version>3.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.8</version>
		</dependency>
			<dependency>
			<groupId>org.powermock</groupId>
			<artifactId>powermock-module-junit4</artifactId>
			<version>1.4.10</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.powermock</groupId>
			<artifactId>powermock-api-easymock</artifactId>
			<version>1.4.10</version>
			<scope>test</scope>
		</dependency>
 

 

你可能感兴趣的:(Powermock)