J'ai une classe Test comme ci-dessous. Nécessité de se moquer d'une méthode statique à l'intérieur HmUtils.class,ExceptionInInitializerError lors de l'utilisation de PowerMock
@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);
}
En HmUtils.class, j'ai une valeur statique comme celui-ci (en ligne 332)
public static final String TEST_FOLDER = Environment.getExternalStorageDirectory()
.getAbsolutePath();
Cette erreur comme lancer une « Environnement » getmethod n'est pas moqué. donc je me suis moqué de la classe Environment et essaye de retourner une valeur pour le getExternalStorageDirectory(), getAbsolutePath() comme ci-dessus. mais il montre l'erreur
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)