2015-05-29 6 views
1

Я использую Easymock с junit для написания модульных тестов. У меня есть сомнения в этом отношении, и я не мог найти очень ясного объяснения относительно этого.
Как вы тестируете недействительные методы?
Поскольку они ничего не возвращают, так что-то вроде:Easymock expectLastCall

Easymock.expect(myMockObject.func(easymock.isa(String.class))).andReturn("NOTHING TO RETURN HERE"); 

выше, не будет работать, как у меня нет ничего, чтобы вернуться.
Итак, как я могу настроить свое ожидание и как проверить метод void?
Я узнал, что что-то вроде easymock.expectLastCall() будет вписываться, но я не уверен, что он делает и зачем он нам нужен. Ясное разъяснение было бы высоко оценено.

ответ

1

Сначала с помощью easymock вы не тестируете метод, который хотите протестировать, вы издеваетесь над методами, которые он вызывает. Например:

public void doSomething(){ 
    i = otherObject.foo(); 
    otherObject.bar(); 
} 

Метод doSomething(), является метод, который вы хотели проверить. i является переменной-членом вашего класса, скажем, целым числом. Вызовы otherObject.foo() и otherObject.bar() - это вызовы метода на другом объекте, который можно было бы издеваться (Mayby их сложно настроить, и вы просто хотите их издеваться ...). Предположим теперь, что bar() является методом пустоты, затем для otherObject.foo() вы можете настроить нормальный ожидаемый результат, но для bar() вам понадобится expectLastCall().

Когда вы проверяете метод void (doSomething()), вы хотите проверить его побочные эффекты ... Это изменило коллекцию? Создал ли он новый объект? Или, в этом примере, изменилось ли значение i?

+0

Спасибо за объяснение. Пожалуйста, объясните это: когда мы настроим обычное ожидание, мы укажем, какой метод при вызове должен вернуть что-то вроде easymock.expect (obj.func()) иReturn (.....), но с expectLastCall, вы не указывать метод, который насмехается? Тогда как он узнает, какой метод вызывает фальсификацию? Я имею в виду, что если у нас есть серия вызовов из 3-х пустотных методов. Как использовать expectLastCall в таком сценарии? –

+0

@KumarMrinal you вызовите метод и вызов easymock.expectLastCall(). Используя данный пример, сначала создадим настройку для foo, затем для bar: easymock.expect (otherObject.foo()) иReturn (.....); otherObject.bar(); EasyMock.expectLastCall(); –

+0

Таким образом, если метод тестирования является чем-то вроде: общественного ничтожной DoSomething() { я = otherObject.foo(); otherObject.bar(); otherObject.set(); otherObject.put(); } Затем, чтобы протестировать этот сценарий, нам нужно было бы написать что-то вроде: easymock.expect (otherObject.foo()) .Return (.....); // для foo otherObject.bar(); EasyMock.expectLastCall(); // для бара otherObject.set(); EasyMock.expectLastCall(); // для набора otherObject.put(); EasyMock.expectLastCall(); // for put Я имею в виду один expectLastCall для каждого предшествующего метода void? –

 Смежные вопросы

  • Нет связанных вопросов^_^