Ложное возвращаемое значение для частного метода, который был помечен как доступный - PullRequest
0 голосов
/ 05 марта 2020

Мой юнит-тест:

@Test
public void testDoSomething() {
  Method m = MyClass.class.getDeclaredMethod("methodToBeMocked");
  m.setAccessible(true); 
  MyClass myClass = spy(new MyClass());
  //m.invoke(myClass); // Calling this invokes the private method correctly

  when(myClass.methodToBeMocked()).thenReturn("DummyReturn"); // This line throws the compiler error

  myClass.doSomething(); // This is the method I'm trying to test
}

Это ошибка компилятора, которую я получаю:

The method methodToBeMocked() from the type MyClass is not visible

Это MyClass

public MyClass {

  public MyClass() {}

  public void doSomething() {
    ..
    methodToBeMocked();
    ..
  }

  private String methodToBeMocked() { // Need to mock return value
    return "Default";
  }
}

1 Ответ

0 голосов
/ 05 марта 2020

Сообщение об ошибке не требует пояснений.

Метод methodToBeMocked () из типа MyClass не отображается

Причина, по которой метод не отображается, заключается в том, что это метод private. Частные методы могут быть вызваны только в пределах класса, в котором они определены. Если вы хотите, чтобы метод был доступен из любого места, сделайте метод public.

public String methodToBeMocked() { // Need to mock return value
    return "Default";
  }

Информация об спецификаторах доступа к методу

...