Powermockシミュレーションプライベートメソッド
2355 ワード
ユニットテストでは、クラスのプライベートメソッドをシミュレートする必要がある場合があります.powermockはこのような機能を提供しています.
以下はテストするクラスです
以下はテストクラスです
これらのコードは簡単で、分かりやすいと信じています.また、必要なjarパッケージは以下のように、mavenで依存を追加します.
以下はテストするクラスです
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>