こんにちは、@SpringJUnit4ClassRunner.class で PowerMockito と Mockito を使用しようとしています。どこに競合があるのか わかりません。私は問題なくmockitoを使用できましたが、静的にはPowerMockitoを使用する必要があります。
次のトレースが取得されます。
org.mockito.exceptions.misusing.UnfinishedStubbingException: ここで検出された未完成のスタブ: -> org.powermock.api.mockito.internal.PowerMockitoCore.doAnswer(PowerMockitoCore.java:31) で
...
テスト コードの重要な部分は次のとおりです。
失敗は 2 行目です。1 行目と 3 行目を削除すると、テストは正常に機能します。SpringJUnit4ClassRunner.class を PowerMockRunner.class に置き換えると、テストも機能します。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
@PrepareForTest({StatFactory.class})
public class TestMain {
@Test
public void testGetStatic() throws Exception {
PowerMockito.mockStatic(StatFactory.class); // 1
StatsFactory sf = mock(StatsFactory.class);
Main main = new Main();
PowerMockito.doReturn(false).when(StatFactory.class, "testFunction"); // 3
Mockito.when(sf.ok()).thenReturn(5); // 2
boolean ret = main.getData();
}
pom.xml
...
<properties>
<java-version>1.6</java-version>
<org.springframework-version>3.1.0.RELEASE</org.springframework-version>
<powermock.version>1.4.9</powermock.version>
</properties>
...
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
<type>jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.8.5</version>
<type>jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
...