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>?
?