Можно ли посмеяться над результатом частного метода и одновременно получить покрытие в сонар или якоко? - PullRequest
2 голосов
/ 27 января 2020

Мне нужно протестировать метод, который вызывает другой приватный метод, проблема не в том, чтобы попытаться смоделировать результат, который возвращает приватный метод, а в том, чтобы не получить покрытие jacoco или sonar. Я тестировал с Powermock, с EasyMock, но при использовании шпиона, при использовании шпиона, тест не покрывается сонаром или jacoco. Закрытый метод и метод publi c, которые выполняют вызов, относятся к одному и тому же классу.

Ситуация для тестирования:

public class ClassOne {

    private Object methodOne () {
        .....
        return object;
    }

    private Object mehodTwo () {
        return Object name = mehtodOne ();
    }
}

Пример теста:

package foo.bar;

import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest(VlcPlayerMinimal.class)
public class VlcPlayerMinimalTest {

  @Test
  public void getVlcRcStatusTest() {
    VlcPlayerMinimal vlcPlayerSpy = PowerMockito.spy(new VlcPlayerMinimal());
    try {
      PowerMockito.doReturn("{status: stopped, id: 2}").when(vlcPlayerSpy, "executeGetRequest", Mockito.any(), Mockito.any());
      String vlcRcStatus = vlcPlayerSpy.getVlcRcStatus();
      System.out.println(vlcRcStatus);
    } catch (Exception e) {
      e.printStackTrace();
      fail("Unexpected exception thrown.");
    }
  }
}

1 Ответ

5 голосов
/ 27 января 2020

Нет, это невозможно. Выберите одно или другое.

Что такое «покрытие» может доказать? Вы фактически не покрываете это. Покрытие кода - это показатель c, который поможет вам определить места, которые не были хорошо протестированы, а не тот, который вы должны попытаться обмануть, чтобы он оказался выше, чем на самом деле.

...