2013-06-01 6 views
1

Моя проблема заключается в издевательстве и тестировании метода, который создает экземпляры других классов и вызывает их метод. Для обеспечения безопасности проекта я не буду вдаваться в подробности. Метод, который нужно протестировать, - это метод launch() для A. Спецификации теста хотели, чтобы b.methodOfB возвращал значение null. другая спецификация теста будет для метода c.getinput() для возврата nullPowermock тестирует статический метод с другими методами другого класса в нем, чтобы вернуть 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 
     } 

    } 

} 

ответ

0

Здесь приведен код модульного тестирования с использованием 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), а затем издеваться методы, как указано выше.

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