EasyMock
Deweloperzy | Tammo Freese Henri Tremblay |
---|---|
Wersja stabilna | 5.0.1 / 24 października 2022 r
|
Magazyn | |
Napisane w | Jawa |
System operacyjny | Międzyplatformowe |
Typ | Narzędzie do testowania jednostek |
Licencja | Licencja Apache |
Strona internetowa |
EasyMock to platforma testowa typu open source dla języka Java wydana na licencji Apache . Framework pozwala na tworzenie podwójnych obiektów testowych na potrzeby Test-Driven Development (TDD) lub Behavior Driven Development (BDD).
Badania przeprowadzone w 2013 roku na 10 000 projektów GitHub wykazały, że EasyMock jest 32. najpopularniejszą biblioteką Java.
Cechy
EasyMock zapewnia dynamicznie generowane obiekty Mock (w czasie wykonywania), bez konieczności ich implementacji. W EasyMock definicja Mock Object różni się od użycia zaimplementowanego Mock Object. Obiekty makiety są budowane w czasie wykonywania i nie można dla nich zdefiniować dodatkowych implementacji.
Pochodzenie
EasyMock został stworzony przez Tammo Freese w 2001 roku (w OFFIS). Pierwotnie pozwalał tylko na symulowane interfejsy, z bezpiecznym kpiną typu, aw późniejszych wersjach dodano dodatkowe funkcje. Przede wszystkim kpina z klas została dodana przez Henri Tremblay, obecnego głównego programistę, w 2003 roku.
Stosowanie
EasyMock może być używany w aplikacjach z często zmieniającymi się interfejsami.
Przykład
Prosty program do wymiany walut jest dostępny tutaj. Interfejs może wyglądać następująco:
importuj wyjątek java.io.IO ; publiczny interfejs ExchangeRate { double getRate ( String inputCurrency , String outputCurrency ) zgłasza wyjątek IOException ; }
Implementacja dla konkretnej klasy może wyglądać następująco:
importuj wyjątek java.io.IO ; klasa publiczna Waluta { prywatne Ciągi jednostek ; prywatna długa kwota ; prywatne centy int ; waluta publiczna ( podwójna kwota , kod ciągu znaków ) { this . jednostki = kod ; ustaw Kwotę ( kwota ); } private void setAmount ( podwójna kwota ) { this . kwota = nowa Podwójna ( kwota ). długaWartość (); to . centy = ( int ) (( kwota * 100,0 ) % 100 ); } public Waluta na Euro ( konwerter Kursów Wymiany ) { if ( "EUR" . równa się ( jednostki )) zwróć to ; else { podwójne wejście = kwota + centy / 100,0 ; podwójna stawka ; spróbuj { stawka = konwerter . getRate ( jednostki , "EUR" ); podwójne wyjście = wejście * stawka ; zwróć nową Walutę ( wyjście , "EUR" ); } catch ( IOException ex ) { return null ; } } } public boolean equals ( Obiekt o ) { if ( o instanceof Currency ) { Waluta inna = ( waluta ) o ; zwrócić to . jednostki . równa się ( inne .jednostki ) && this . kwota == inny . kwota && to . centy == inny . centy ; } zwróć fałsz ; } public String toString () { zwracana kwota + "." + Matematyka . abs ( centy ) + "" + jednostki ; } }
Przykładowa implementacja dla klasy testowej może wyglądać następująco:
import junit.framework.TestCase ; import org.easymock.EasyMock ; importuj wyjątek java.io.IO ; Klasa publiczna CurrencyTest rozszerza TestCase { public void testToEuros () zgłasza wyjątek IOException { Waluta testObject = nowa waluta ( 2,50 , "USD" ); Oczekiwana waluta = nowa waluta ( 3,75 , " EUR" ); ExchangeRate mock = EasyMock . createMock ( ExchangeRate . class ); EasyMock . oczekiwać ( mock . getRate ( "USD" , "EUR" )). iPowrót ( 1.5 ); EasyMock . powtórka ( makieta ); Aktualna waluta = obiekt testowy . na Euro ( próbne ); assertEquals ( oczekiwany , rzeczywisty ); } }
Zobacz też
- Rozwój oparty na zachowaniu
- Makieta obiektu
- Lista frameworków do testów jednostkowych
- Testowanie oprogramowania
- Testów jednostkowych