Разыскивается, но не вызывается: ошибка Powermockito для метода stati c - PullRequest
0 голосов
/ 22 января 2020

Версия Powermockito: 1.7.4 Версия Mockito: 1.10.19 Java Версия: 8

Я пытаюсь протестировать фрагмент кода, используя powermockito, но продолжаю получать Требуется, но не вызывается ..Однако были другие взаимодействия с этой фиктивной ошибкой. Ниже мой код. Любое понимание / предложение будет высоко оценено.

Тестовый класс

@RunWith(PowerMockRunner.class)
@PrepareForTest(ClassWithStaticMethod.class)
public class PITest{

  @Captor
  private ArgumentCaptor<List<Something>> captor;

  @Captor
  private ArgumentCaptor<String> stringCaptor;

  @Before
  public void init(){
    PowerMockito.mockStatic(ClassWithStaticMethod.class);
  }

  @Test
  public void testMethod1(){
    ClassWithoutStaticMethod object = new ClassWithoutStaticMethod();
    object.method(param1, param2, param3);
    PowerMockito.verifyStatic(ClassWithStaticMethod.class, Mockito.times(1));
    ClassWithStaticMethod.publish(stringCaptor.capture(), captor.capture());
    Assert.assertEquals(param1.getJobId(),captor.getValue().get(0).getJobId());
  }

  @Test
  public void testMethod2(){
    ClassWithoutStaticMethod object = new ClassWithoutStaticMethod();
    object.method(param1, param3);
    PowerMockito.verifyStatic(ClassWithStaticMethod.class, Mockito.times(1));
    ClassWithStaticMethod.publish(stringCaptor.capture(), captor.capture());
    Assert.assertEquals(param1.getJobId(),captor.getValue().get(0).getJobId());
  }
}

ClassWithoutStaticMethod

public class ClassWithoutStaticMethod(){

  private String CONSTANT;

  public void method(param1, param2, param3){
    List<Something> list = getSomethings(param1, param2, param3);
    ClassWithStaticMethod.publish(CONSTANT, list);
  }

  public void method(param1, param3){
    Something something = getSomething(param1, param3);
    ClassWithStaticMethod.publish(CONSTANT, something);
  }
}

ClassWithStaticMethod

public class ClassWithStaticMethod(){
  public static void publish(CONSTANT, something){
    publish(CONSTANT, Collections.singletonList(something));
  }

  public static void publish(CONSTANT, List<Something>){
    //processing logic
  }

}

testMethod1 работает нормально и проходит, но когда я пытаюсь запустить testMethod2, именно тогда начинается проблема. Вызов происходит для ClassWithoutStaticMethod , а затем для метода publi sh ClassWithStaticMethod , но тогда почему ошибка?

...