2015-04-28 5 views
0

Я ищу, чтобы издеваться над статическим методом класса поддержки, и для этого мне нужно издеваться над методом тестируемого класса с помощью jMockit. В приведенном ниже примере, я хочу, чтобы moker метод canContinue, чтобы всегда входить в условие if. Я также wnt, чтобы издеваться над статическим методом и проверять все, что происходит после этого.Частичный издевательский класс под тестированием

public class UnitToTest { 

    public void execute() { 

     Foo foo = // 
     Bar bar = // 

     if (canContinue(foo, bar)) { 
      Support.runStaticMethod(f); 
      // Do other stuff here that I would like to verify 
     } 
    } 

    public boolean canContinue(Foo f, Bar b) { 
     //Logic which returns boolean 
    } 
} 

Мой метод тестирования выглядит следующим образом:

@Test 
public void testExecuteMethod() { 

    // I would expect any invocations of the canContinue method to 
    // always return true for the duration of the test 
    new NonStrictExpectations(classToTest) {{ 
     invoke(classToTest, "canContinue" , new Foo(), new Bar()); 
     result = true; 
    }}; 

    // I would assume that all invocations of the static method 
    // runStaticMethod return true for the duration of the test 
    new NonStrictExpectations(Support.class) {{ 
     Support.runStaticMethod(new Foo()); 
     result = true; 
    }}; 

    new UnitToTest().execute(); 

    //Verify change in state after running execute() method 
} 

Что я здесь делаю неправильно? Изменение первого ожидания метода canContinue для возврата false не влияет на то, выполняется ли выполнение кода внутри условия if.

ответ

1

Вы насмехаясь один экземпляр (classToTest), а затем осуществлять другую (new UnitToTest().execute()), который не издевались; это одно не так.

Кроме того, тест не должен использовать invoke(..."canContinue"...), так как метод canContinue равен public. Но на самом деле этот метод не следует издеваться над всем; тест должен подготовить любое состояние, чтобы canContinue(foo, bar) вернул желаемое значение.

+0

, если заменить новые NonStrictExpectations (classToTest) с новых NonStrictExpectations (UnitToTest.class) , которые должны быть зафиксированы – Jorgeejgonzalez