EasyMock

EasyMock
Deweloperzy Tammo Freese Henri Tremblay
Wersja stabilna
5.0.1 / 24 października 2022 r . ; 4 miesiące temu ( 2022-10-24 )
Magazyn
Napisane w Jawa
System operacyjny Międzyplatformowe
Typ Narzędzie do testowania jednostek
Licencja Licencja Apache
Strona internetowa easymock .org

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ż

Linki zewnętrzne