2015-01-27 2 views
2

У меня есть класс транзакций, который имеет метод проверки. В методе есть условие, которое, если выполнено, не будет вызывать метод уведомления о предупреждениях. Метод оповещения будет вызываться только тогда, когда условие проверки не выполнено (условие ложно, вызывает предупреждение и уведомляет пользователя). Я хочу протестировать тест Junit, если этот метод оповещения вызван или нет. Мог бы кто-нибудь посоветовать, как действовать, когда я новичок в JunitsJunit, чтобы проверить, вызван ли вызов метода

ответ

1

Используйте рамки Mockito. Эта структура делает ваш вид тестирования намного проще.

Вы можете использовать verify метод:

//Check if called once 
verify(dependency, times(1)).yourMethod() 

Проверьте API для более informations.

+0

Это не совсем так, как есть. Почему бы вам не добавить код mockito для проверки того, что метод вызван, и я дам вам +1. – Kayaman

4

Посмотрите на насмешливые библиотеки. В Mockito это будет как

Notifier mock = Mockito.mock(Notifier.class); 
    ClassUnderTest myClass = new ClassUnderTest(mock); 
    myClass.doSomething(-1); 
    Mockito.verify(mock).notification(Mockito.eq("Negative value passed!")); 
    myClass.doSomething(100); 
    Mockito.verifyNoMoreInteractions(mock); 
+0

Чтобы уточнить, 'Mockito.verify (mock) .close();' это те тесты, которые вызвал метод. – Kayaman

+0

Спасибо за ответ. поэтому у меня должно быть условие в моем методе Junit, а затем вызывать метод из условия и издеваться над вызовом метода? – JaveDeveloper

+0

Надеюсь, мой пример должен пролить больше света. – vrudkovsk

1

Из Вашего вопроса не ясно, принадлежит ли предупреждение способ уведомления в одном классе вы тестируете.

Если метод уведомления о тревоге - в другом классе, чем метод, который вы тестируете, вы можете использовать насмешливую библиотеку, такую ​​как Mockito, для проверки вызова метода, как предложено другими ответами.

Если, с другой стороны, способ уведомления является в том же классе как метод проверки, я бы посоветовал не проверить вызов метода уведомления, но проверить выход этого метода (вы, вероятно, захотите также использовать насмешливую библиотеку для этого, но для проверки вызовов методов на любых других объектах, используемых для создания предупреждения).

Третья возможность заключается в том, что оба метода находятся в одном классе, но вы действительно хотите только чтобы проверить, что метод уведомления вызван, а не его вывод, потому что вы считаете, что уведомление - это другая функция, которую вы хотите протестировать отдельно. Это будет признаком того, что ваш класс может делать слишком много вещей и что лучше всего реорганизовать так, чтобы эти методы попадали в отдельные классы.

+0

Да, метод находится в другом классе (не в методе, для которого я буду писать тестовый пример) – JaveDeveloper

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