-
Notifications
You must be signed in to change notification settings - Fork 0
Framework EasyMock
EasyMock to oparty na Javie framework do tworzenia makiet, który jest używany w połączeniu z innymi bibliotekami do testowania jednostkowego, takimi jak JUnit i TestNG. EasyMock jest bardzo podobny do frameworka do mockowania Mockito.
EasyMock pozwala nam tworzyć pozorowane obiekty interfejsów i konkretnych klas oraz określać ich zachowania. Następnie możemy użyć tych makiet do napisania kodu do testowania naszych głównych klas. W ten sposób pisanie testów jednostkowych jest uproszczone, ponieważ nie musimy przejmować się zewnętrznymi zależnościami.
EasyMock ułatwia płynne tworzenie pozorowanych obiektów. Używa Java Reflection do tworzenia pozorowanych obiektów dla danego interfejsu. Obiekty pozorowane to nic innego jak proxy dla rzeczywistych implementacji.
- Obsługuje adnotacje.
- Obsługuje wyjątki.
- Mockowanie klas i interfejsów. Jedno api dla obu przpadków.
- EasyMock nie pozwala na "szpiegowanie" obiektów.
- Przejrzystość, prostota i mała ilość kodu potrzebna do utworzenia. Obiekt można wykorzystać zaraz po stworzeniu o ile nie zawiera większej logiki. Metody są wywoływane nie powodując błędu, nic nie robią.
- W przypadkach gdy musimy utworzyć sporo obiektów zależnych lub kod musi się wykonać w odpowiednim środowisku(połączenie z bazą danych), oznacza szybsze wykonanie się samego testu,
Adnotacja | Opis |
---|---|
@Mock | Służy do określenia pola, które ma być mockowane przez EasyMock. |
@TestSubject | Służy do określenia obiektu, do którego chcemy, aby EasyMock wstrzyknął mockowane obiekty utworzone za pomocą adnotacji @Mock. |
@RunWith(EasyMockRunner.class) | Służy do jawnego zainicjowania używania framework'u EasyMock i jego adnotacji. |
import static org.easymock.EasyMock.*;
import static org.junit.jupiter.api.Assertions.*;
import org.easymock.EasyMockSupport;
import org.easymock.Mock;
import org.easymock.TestSubject;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import com.journaldev.utils.Calculator;
import com.journaldev.utils.MathUtils;
public class EasyMockAnnotationExample {
@Mock
private Calculator mockCalculator;
@TestSubject
private MathUtils mathUtils = new MathUtils(mockCalculator);
@BeforeEach
public void setup() {
EasyMockSupport.injectMocks(this);
}
@Test
public void test() {
expect(mockCalculator.add(1, 1)).andReturn(2);
expect(mockCalculator.multiply(10, 10)).andReturn(100);
replay(mockCalculator);
assertEquals(mathUtils.add(1, 1), 2);
assertEquals(mathUtils.multiply(10, 10), 100);
}
}
-
Etap 1
-
Etap 2
-
Etap 3
-
Etap 4
-
Etap 5
-
Etap 6
-
Etap 7