pom.xml(Mavenを使用している場合)に必要な依存関係を追加
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.x.x</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.x.x</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<version>2.x.x</version>
<scope>test</scope>
</dependency>
テストクラス
import static org.mockito.Mockito.*;
import static org.powermock.api.mockito.PowerMockito.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import org.powermock.modules.junit4.PowerMockRunnerDelegate;
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(MockitoJUnitRunner.class)
@PrepareForTest({ClassWithStaticMethod.class})
public class ExampleTest {
@Mock
private DependencyClass dependency;
@Test
public void testStaticMethod() {
// 静的メソッドのモック設定
mockStatic(ClassWithStaticMethod.class);
when(ClassWithStaticMethod.staticMethod()).thenReturn("mocked value");
// 通常のモック設定
when(dependency.someMethod()).thenReturn("some value");
// テストの実行
String result = new ClassUnderTest(dependency).methodUnderTest();
// アサーション
assertEquals("expected value", result);
}
}
参考