jeudi 15 septembre 2016

Mock ClassLoader.getSystemClassLoader().loadClass with Powermockito

I'm trying to test utility method which check if particular class is on class path, if yes return true else return false. My class method something like this:

public static boolean isMyClassOnClassPath() {
    try {
        ClassLoader.getSystemClassLoader().loadClass("com.MyClass");
        return true;
    } catch (ClassNotFoundException ex) {
        return false;
    }

}

Checking false condition is easy as particular class is not not the ClassPath. I'm trying to write Junit for positive scenario when this method will return true.

@Test
public void isMyClassOnClassPathShouldReturnTrueWhenMyClassIsOnClassPath() throws Exception{
    PowerMockito.mockStatic(MyClass.class);
    ClassLoader classLoader = PowerMockito.mock(ClassLoader.class);
    PowerMockito.mockStatic(ClassLoader.class);
    PowerMockito.when(ClassLoader.getSystemClassLoader()).thenReturn(classLoader);

    //trying to mock classLoader.loadClass, below way is incorrect
    //PowerMockito.when(classLoader.loadClass("com.MyClass")).thenReturn(Class<java.lang.Object.class>);
    Assert.assertTrue(MyClassUtil.isMyClassOnClassPath());
}

So is it possible to mock classLoader.loadClass() method?

Aucun commentaire:

Enregistrer un commentaire