2017-11-11 104 views
1

は、次のコードは、しかしPowerMockitoバージョン1.7.3とMockitoバージョン2.9.0MockitoとPowerMockitoエラー

import static org.junit.Assert.assertNotNull; 
import static org.junit.Assert.assertTrue; 

import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.Mockito; 
import org.powermock.api.mockito.PowerMockito; 
import org.powermock.core.classloader.annotations.PrepareForTest; 
import org.powermock.modules.junit4.PowerMockRunner; 

@RunWith(PowerMockRunner.class) 
@PrepareForTest({FileUtils.class, Paths.class, Files.class}) 
public class FileUtilsTest { 

    @Test 
    public void testGetFileContents_Success() throws Exception { 
     String filePath = "c:\\temp\\file.txt"; 

     Path mockPath = PowerMockito.mock(Path.class); 
     PowerMockito.mockStatic(Paths.class); 
     PowerMockito.mockStatic(Files.class); 

     Mockito.when(Paths.get(Mockito.anyString())).thenReturn(mockPath); 
     Mockito.when(Files.readAllBytes(Mockito.isA(Path.class))).thenReturn("hello".getBytes()); 

     String fileContents = FileUtils.getFileContents(filePath); 
     assertNotNull(fileContents); 
     assertTrue(fileContents.length() > 0); 

     PowerMockito.verifyStatic(Paths.class); 
     Paths.get(Mockito.anyString()); 
     PowerMockito.verifyStatic(Files.class); 
     Files.readAllBytes(Mockito.isA(Path.class)); 
    } 

} 

で動作します - 私は、以下のバージョンに行く - PowerMockitoバージョン2.0.0-beta.5とMockitoバージョン2.12.0 - 私は次のエラー

org.mockito.exceptions.base.MockitoException: 
Cannot mock/spy class java.nio.file.Paths 
Mockito cannot mock/spy because : 
- final class 

にこの問題を引き起こしている可能性が何か私は変更する必要があるものの任意のアイデアを得ますか?

は、私はあなたがあなたのアップグレードがPowerMock v2.x.に延期/ダウングレードする必要があると思うよあなたに ダミアン

答えて

1

ありがとうございました

PowerMockito not compatible Mockito2 since their v2.0.55-beta releaseを参照してください。

すべてPowerMockのバージョン2.x/Mockitoのバージョン2.xの統合作業は、これらの2つの問題に覆われている:それのようなに見えるhttps://github.com/mockito/mockito/issues/1110

  • PowerMock:https://github.com/powermock/powermock/issues/726
  • Mockito目標は、PowerMock v2.0.0(および一部のMockito 2.xバージョン)でこれを動作させることですが、いつ利用可能になるのかについて明確な声明はありません。

+0

完璧 - ありがとうございました@glytghing – Damien

関連する問題