Как обработать вызов метода Stati c класса ThirdParty при тестировании Junit с использованием Mockito? - PullRequest
1 голос
/ 28 января 2020

Возникла проблема при тестировании метода с использованием Mockito. проверьте метод testMethodToBeTested () класса JunitTestCaseClass, который должен обрабатывать вызов метода stati c третьего класса.

class ClasssToBeTested{

    public String methodToBeTested() {
        String result = ThirdPartyUtilClass.methodToBeCall();
        return result;
    }
}

class ThirdPartyUtilClass{

    public static String methodToBeCall(){
        return "OK";
    }
}

// JunitTestCase which will test method "methodToBeTested()" of ClasssToBeTested class
class JunitTestCaseClass{

    @InjectMocks
    private ClasssToBeTested classsToBeTested;

    @Test
    public void testMethodToBeTested() {
        //How to handle ThirdPartyUtilClass.methodToBeCall(); statement in unit testing
        String result = classsToBeTested.methodToBeTested();
        Assert.assertNotNull(result);
    }
}

Пожалуйста, помогите и спасибо заранее.

1 Ответ

1 голос
/ 28 января 2020

Я думаю, что это ваш ответ, почему он не работает: https://github.com/mockito/mockito/wiki/FAQ

Каковы ограничения Mockito

Спецификация Mockito 2.x c ограничения

Requires Java 6+
Cannot mock static methods
Cannot mock constructors
Cannot mock equals(), hashCode(). 

Во-первых, вы не должны издеваться над этими методами. Во-вторых, Mockito определяет и зависит от конкретной c реализации этих методов. Переопределение их может сломать Мокито. Пересмешивание возможно только на виртуальных машинах, которые поддерживаются Objenesis. Не волнуйтесь, большинство виртуальных машин должны работать нормально. Следить за реальными методами, где реальная реализация ссылается на внешний класс через OuterClass.this, невозможно. Не волнуйтесь, это крайне редкий случай.

Если вы действительно хотите высмеивать методы stati c, тогда PowerMock - ваше решение. https://github.com/powermock/powermock/wiki/mockito

...