2017-10-06 11 views
1

私は以下のようなTestクラスを持っています。これは、「環境」のようなエラーがスローPowerMockを使用している場合のExceptionInInitializerError

public static final String TEST_FOLDER = Environment.getExternalStorageDirectory() 
     .getAbsolutePath(); 

HmUtils.classで

@RunWith(PowerMockRunner.class) 
@PrepareForTest({Environment.class, HmUtils.class}) 
public class MyUtilTest { 
@Mock 
Context mockedContext; 
@Before 
public void initialSetup() 
{ 
    System.out.println("initSetup Executed:"); 
    mockedContext = PowerMockito.mock(Context.class); 
    PowerMockito.mockStatic(Environment.class); 
    PowerMockito.mockStatic(HmUtils.class); 
} 
@Test 
public void DeviceTest() throws Exception 
{ 
    System.out.println("DeviceTest Executed:"); 
    when(Environment.getExternalStorageDirectory()).thenReturn(new File("testFile")); 
    when(Environment.getExternalStorageDirectory() 
      .getAbsolutePath()).thenReturn(anyString()); 
    HmUtils.setCurrentBTAddress(null); 
} 

、HmUtils.class内の静的メソッドを模擬する必要がある、私は(ライン332で)このような静的な値を持っていますgetmethodは嘲笑されません。私は環境クラスを嘲笑し、上記のようにgetExternalStorageDirectory()、getAbsolutePath()の値を返そうとしています。それでも、それはLogUtils.classエラーに

java.lang.ExceptionInInitializerError 
at sun.reflect.GeneratedSerializationConstructorAccessor12.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
Caused by: java.lang.NullPointerException 
at com.package.android.app.mymanager.util.HmUtils.<clinit>(HmUtils.java:332) 

答えて

0

を示し、私は以下の

@RunWith(PowerMockRunner.class) 
@PrepareForTest({Environment.class}) 
public class LogUtilsTest { 

private File file; 

@Before 
public void initialSetup() { 
    PowerMockito.mockStatic(Environment.class); 
    file = mock(File.class); 
    when(Environment.getExternalStorageDirectory()).thenReturn(file); 
    when(file.getAbsolutePath()).thenReturn("abc"); 
        (OR) 
    //when(file.getAbsolutePath()).thenReturn(Mockito.anyString()); 
} 

@Test 
public void log_d() { 
    LogUtils.log_d("tag", "message"); 
} 
} 
をスニペットで私は環境exceptionininitializererrorを解決

public class LogUtils 
{ 
    private static final String TEST_FILE_FOLDER = Environment.getExternalStorageDirectory() 
     .getAbsolutePath(); 
} 

LogUtilsTest.Classでは、この行でエラーが発生しました

関連する問題