zgodnie z tytułem, po prostu zastanawiałem się, czy istnieje mechanizm z EasyMock aby sprawdzić, czy metoda nie został wezwany podczas jego życia.EasyMock: przetestować tę metodę w udawanym nie nazywa
Odpowiedz
Domyślnie EasyMock rzuci wyjątek dla wszelkich metod, które są wywoływane, które nie zostały wyraźnie określone oczekiwania na.
Z EasyMock documentation:
Nicea Mocks
Na atrapa obiektu zwróconego przez mock() domyślne zachowanie dla wszystkich metod jest rzucić AssertionError dla wszystkich nieoczekiwanych wywołań metod. Jeśli chcesz "miły" Mock Object, który domyślnie zezwala na wszystkie wywołania metod i zwraca odpowiednie puste wartości (0, null lub false), użyj zamiast tego niceMock().
To, o co pytasz, jest domyślnym zachowaniem.
Wiem, że to pytanie jest bardzo stary, ale miałem to samo pytanie jak PO i zrobił kilka rozglądać. Znalazłem następujące rozwiązanie:
Po dodaniu .andThrow(new AssertionFailedError()).anyTimes();
na końcu deklaracji EasyMock, test zakończy się niepowodzeniem po wywołaniu wyśmiewanej metody.
Przyczyną jest to, że lepiej nie używać NiceMock i pozwolić, aby test zakończył się niepowodzeniem z powodu niezmodyfikowanego wywołania metody, ponieważ pozwala to konkretnie przetestować, że metoda XYZ nie została wywołana w danym scenariuszu.
Chciałbym dać David Wallace kredyt dla tej odpowiedzi. Znalazłem rozwiązanie w swojej odpowiedzi na następujące stanowisko: Test that void method didn't get called with EasyMock
Uważam, że to powinna być zaakceptowana odpowiedź. Powód jest taki, że testy jednostkowe często zmieniają się wraz z nowymi wymaganiami i bardzo łatwo jest przegapić, dlaczego nie ustalono fałszywych oczekiwań. To rozwiązanie powoduje, że brakujące wywołanie metody jest jawne, a więc wymaga większej uwagi ze strony osoby zmieniającej kod. – mindreader
- 1. Jak nazywa się tę metodę przechowywania?
- 2. Jak przetestować tę linię LayoutInflater.from() w Androidzie
- 3. Używanie easymock w wielowątkowości
- 4. Ustaw negatywne oczekiwania w EasyMock
- 5. Jak samodzielnie przetestować metodę wywołania zwrotnego modelu?
- 6. Jak przetestować tę zmienną nie jest równa wielu rzeczy? Python
- 7. Odpowiednik LastCall.IgnoreArguments w EasyMock
- 8. Dlaczego localloc łamie tę metodę CIL?
- 9. Java: Jak zastąpić tę ogólną metodę?
- 10. textFieldShouldReturn nie nazywa
- 11. szyderczy właściwości zagnieżdżonych z udawanym
- 12. Jak poprawnie zakreślić tę "publiczną" metodę?
- 13. Czy ktoś może wyjaśnić tę metodę Javascript?
- 14. Kiedy należy wywołać tę metodę Runtime.getRuntime(). AddShutdownHook()
- 15. XmlHttpRequest.onload nie nazywa się
- 16. Jak PHPUnit przetestować metodę bez wartości zwracanej?
- 17. Jak przetestować tę samą funkcję z wieloma tła w ogórku
- 18. EasyMock: dostarczanie argumentów, których nie znasz podczas kompilacji
- 19. Jak przetestować tę samą instancję obiektu w JavaScript?
- 20. Gdzie mogę przetestować moją metodę httpPost?
- 21. Dowiedz się, która klasa nazywa metodę w innej klasie
- 22. W jaki sposób mogę przetestować chronioną metodę w C++?
- 23. można uruchomić wiele kontroli, ale tę samą metodę w C#
- 24. EasyMock andReturn() vs andStubReturn()
- 25. Oczekiwania EasyMock metodami pustymi
- 26. Jak przetestować metodę, która zgłasza błąd w Swift 2?
- 27. Jak przetestować dwa terminy dateTimes na tę samą datę?
- 28. textFieldDidBeginEditing: nie nazywa się
- 29. Jak mogę przetestować metodę odbioru Abonenta w Akka Cluster?
- 30. textViewDidEndEditing nie nazywa się
znajdę domyślne zachowanie irytujące, jak bardzo łatwo skończyć „wymagający” w teście, że kod badanego nieefektywne. Kiedyś zrobiłem prosty Refactor poruszania się getSomething() połączenia na zewnątrz pętli, który spowodował niepowodzenie testu, bo nie zadzwonił getSomething 40 razy (!), I „non-nice” mocks zachęcać do tego rodzaju testu (ponieważ zawiedzie, gdy spodziewam się tylko jednego połączenia przed refaktoryzacją). –
@Stein: agreed. Testy jednostkowe powinny być drobnoziarniste, najlepiej testując tylko jedną rzecz. "nie ładne" kpiny zniechęcają to. –
Z mojego czytania tego pytania wynika, że PO chce fałszywej weryfikacji, która zostanie odrzucona, jeśli zostanie wywołana. Fajne drwiny nie są tym, co chce OP, ponieważ gdy podczas egzaminu sprawdzana jest fajna sztuczka, nadal przechodzi weryfikację. –