Powermock тестирует статический метод с другими методами другого класса, чтобы вернуть null

Моя проблема заключается в издевательстве и тестировании метода, который создает экземпляры других классов и вызывает их метод. В целях безопасности проекта я только не буду вдаваться в подробности. Тестируемый метод — это метод launch() класса A. Спецификации теста хотели, чтобы b.methodOfB возвращал значение null. другая тестовая спецификация будет для метода c.getinput() возвращать null

public class A{

    public static void launch()
    {
       //instantiation of other classes that will be used
       B b = new B();
       C c = new C();

       //class C has a method that gets user information from the console and returns a string
       //i would like to mock c.getinput() to return null
       while (c.getinput().compareToIgnoreCase("q") != 0) {
           //would also like to mock the b.methodOfB() to return null for testing im having a hard time doing this
           b.methodOfB();//returns something not null
       }

    }

}

person erwin lim    schedule 01.06.2013    source источник


Ответы (1)


Вот код модульного тестирования с использованием PowerMockito.

@Runwith(PowerMockRunner.class)
public void class ATest
{

  public void testLaunch()
  {
     B b = PowerMockito.mock(B.class);
     C c = PowerMockito.mock(C.class);
     PowerMockito.when(c.getInput()).thenReturn(null);
     PowerMockito.when(b.methodOfB()).thenReturn(null);
     // now call your methods 
   }

 }

Если вам нужно имитировать статический метод в классе, вы должны использовать mockStatic(Classname.class), а затем имитировать методы, как указано выше.

Примечание: я не компилировал этот код. Я только что набрал ответ. Если вам нравится, голосуйте :)

person Libin    schedule 05.06.2013