Как проверить приватный метод в Junit Springboot - PullRequest
0 голосов
/ 22 апреля 2020

Мне нужно проверить приватный метод. Как правильно тестировать метод ниже? Я пытался использовать Mockito, когда ... но как мне издеваться над частным методом. Я думаю, что мы не можем издеваться над частным методом.

    private classObject privateMethod(Message message){
        try{
           Objectmapper mapper = new ObjectMapper();
           return mapper.readValue(message.getBody(), ClassName.class);
        }catch(){
           throw new Exception(); 
        }
    }

    //I am getting an exception while testing

    byte[] body = {10,-11,12,14,15};
    MessageProperties msgProp = new MessageProperties();
    Message message = new Message(body, msgProp);

    // the above message is passed as parameter to function through                           
    // which private method is called
    objectxyz.execute(message);

    // execute method
    public void execute(Message message){
        objectxyz xyz = privateMethod(message);
        objectabc abc = service.someMethod(xyz);
        List<object> list = someAnotherMethod(abc, xyz);
    }

    // I tried below code in my test case and have used 
    // @Mock private ObjectMapper objectMapper;
    Mockito.when(objectMapper.readValue(body, ClassName.class)).thenReturn(classObject);

Ответы [ 4 ]

2 голосов
/ 22 апреля 2020

Spring boot не имеет ничего особенного:

Частные методы не должны тестироваться - это внутреннее «как» класса, и вы должны в основном тестировать API класса - «возможности», которые он предоставляет пользователю класса не частные методы.

Подумайте о том, чтобы трактовать класс как черный ящик (возможно с ложными зависимостями этого класса) и проверить его функциональность, как я объяснил.

1 голос
/ 22 апреля 2020

Вы можете использовать каркас коллектора для тестирования с отражением. См. Это ранее отвеченное решение: Как проверить приватную функцию или класс, который имеет закрытые методы, поля или внутренние классы?

0 голосов
/ 22 апреля 2020

Это подходы Basi c basi c для тестирования приватных методов.

  1. Не тестировать приватные методы.
  2. Предоставить доступ пакету методов.
  3. Использовать вложенный тестовый класс.
  4. Использовать отражение.

Подробная статья

0 голосов
/ 22 апреля 2020

Да, закрытый метод должен быть внутренним методом, должен использоваться другим методом publi c, поэтому. не проверяйте это;

...