Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用PowerMock时出现异常InInitializeError_Java_Android_Junit_Mockito_Powermockito - Fatal编程技术网

Java 使用PowerMock时出现异常InInitializeError

Java 使用PowerMock时出现异常InInitializeError,java,android,junit,mockito,powermockito,Java,Android,Junit,Mockito,Powermockito,我有一个测试类,如下所示。需要在HmUtils.class中模拟静态方法 @RunWith(PowerMockRunner.class) @PrepareForTest({Environment.class, HmUtils.class}) public class MyUtilTest { @Mock Context mockedContext; @Before public void initialSetup() { System.out.println("initSetup Exe

我有一个测试类,如下所示。需要在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行)

这种抛出类似“Environment”的错误的getmethod不会被模拟。所以我模拟了环境类,并尝试返回getExternalStorageDirectory()的值,getAbsolutePath(),如上所述。但它仍然显示出错误

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)
java.lang.ExceptionInInitializeError
位于sun.reflect.GeneratedSerializationConstructorAccessor12.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:423)
原因:java.lang.NullPointerException
位于com.package.android.app.mymanager.util.HmUtils.(HmUtils.java:332)

LogUtils.class中,我在这一行中遇到了错误

  public class LogUtils
 {
    private static final String TEST_FILE_FOLDER = Environment.getExternalStorageDirectory()
        .getAbsolutePath();
 }  
在LogutilTest.Class I中,通过以下代码段解析环境异常InInitializeError

 @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");
 }
}

在LogUtils.class中,我在这行中得到了错误

  public class LogUtils
 {
    private static final String TEST_FILE_FOLDER = Environment.getExternalStorageDirectory()
        .getAbsolutePath();
 }  
在LogutilTest.Class I中,通过以下代码段解析环境异常InInitializeError

 @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");
 }
}