1

こんにちは、@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>
...  
4

1 に答える 1