Ошибка "Mockito не может издеваться над этим классом", даже если я использую powermockito для имитации класса

У меня последний класс

public final class A {
    private static final Set<String> B = methodA();

    private static Set<String> methodA() {
        //does some processing and 
        //returns a set 
    }

    public static boolean methodB() {
        //does some processing and 
        //returns a boolean 
    }
}

Тестируемый класс - это класс B. Этот класс вызывает статический метод последнего класса A

public class B {
    public boolean methodC() {
       if(methodB()) {
         C.methodD();
       }
    }
}

Класс C снова последний класс

public final class C {

    public static void methodD() {
        //does some processing
    }
}

Я издеваюсь над этим последним классом А вот так

public class TestB {

    public void testMethodC() {
        PowerMockito.mock(A.class); 
    }
}

Случай не работает внутри метода D класса C.
Я получаю эту ошибку, Mockito не может имитировать этот класс: A.

1 ответ

Вам понадобятся аннотации:

@RunWith(PowerMockRunner.class)
@PrepareForTest({A.class})
public class TestB {

    public void testMethodC() {
        PowerMockito.mock(A.class); 
    }
}

Мои зависимости:

<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-api-mockito2</artifactId>
    <version>2.0.2</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.powermock</groupId>
    <artifactId>powermock-module-junit4</artifactId>
    <version>2.0.2</version>
    <scope>test</scope>
</dependency>
Другие вопросы по тегам