Mockito çerçevesi, Java uygulamalarını test etmek için kullanılan Mock(), Verify(), When() vb. gibi çeşitli yöntemler sağlar. Bu önceden tanımlanmış yöntemlerin kullanılması testi çok kolaylaştırır.
Mockito yöntemlerinin kısa açıklaması aşağıda verilmiştir:
Java dizesi ekleme
Mockito sahte() yöntemi
Belirli bir sınıfın veya arayüzün sahte nesnelerini oluşturmak için kullanılır. Mockito'da beş tane var sahte() Farklı argümanlara sahip yöntemler. Mock'lara herhangi bir şey atamadığımızda varsayılan değerleri döndüreceklerdir. Beş yöntemin tümü nesnelerle dalga geçme işlevini yerine getirir.
Aşağıda farklı parametrelere sahip mock() yöntemleri verilmiştir:
Sözdizimi: sahte(Sınıf classToMock)
Sözdizimi: maket(Sınıf classToMock, Yanıt varsayılanYanıt)
Sözdizimi: maket(Sınıf classToMock, MockSettings maketSettings)
Sözdizimi: maket(Sınıf classToMock, ReturnValues returnValues)
Sözdizimi: maket(Sınıf classToMock, Dize adı)
Aşağıdaki kod pasajı nasıl kullanılacağını gösterir sahte() yöntem:
ToDoService doService = mock(ToDoService.class);
Mockito When() yöntemi
Stubbing yöntemlerine olanak sağlar. Belirli yöntemler çağrıldığında belirli değerleri döndürmek için taklit yapmak istediğimizde kullanılmalıdır. Basit bir ifadeyle ' Ne zaman XYZ() yöntemi çağrılır, Daha sonra ABC'yi döndür.' Çoğunlukla yürütülecek bir koşul olduğunda kullanılır.
Sözdizimi: When(T methodCall)
Aşağıdaki kod parçacığı, When() yönteminin nasıl kullanılacağını gösterir:
when(mock.someCode ()).thenReturn(5);
Yukarıdaki kodda, sonraReturn() çoğunlukla şununla birlikte kullanılır: Ne zaman() yöntem.
Mockito doğrulama() yöntemi
doğrulamak() yöntem, belirtilen bazı yöntemlerin çağrılıp çağrılmadığını kontrol etmek için kullanılır. Basit bir ifadeyle, bir testte bir kez gerçekleşen belirli davranışları doğrular. Tanımlanan yöntemlerin çağrıldığından emin olmak için test kodunun altında kullanılır.
Mockito çerçevesi, alaycı nesnelere yönelik tüm yöntem çağrılarını parametreleriyle birlikte takip eder. Alay ettikten sonra, valid() metodunu kullanarak tanımlı koşulların sağlanıp sağlanmadığını doğrulayabiliriz. Bu tür testlere bazen şu ad verilir: davranış testi. Bir yöntem çağrısının sonucunu kontrol etmek yerine, bir yöntemin doğru parametrelerle çağrıldığını kontrol eder.
Verify() yöntemi aynı zamanda çağrı sayısını test etmek için de kullanılır. Böylece çağrıların tam sayısını şu şekilde test edebiliriz: kez yöntemi, en az bir kez yöntemi, Ve en fazla yöntem alaycı bir yöntem için.
Mockito sınıfında aşağıda verilen iki tür doğrulama() yöntemi vardır:
Sözdizimi: doğrulamak(T sahte)
Sözdizimi: doğrulama(T modeli, VerificationMode modu)
Mockito casus() yöntemi
Mockito, bir nesnenin kısmen taklit edilmesi için bir yöntem sağlar; casus yöntem. Casusluk yöntemini kullanırken gerçek bir nesne vardır ve bu gerçek nesneden casuslar veya taslaklar oluşturulur. Spy kullanarak bir yöntemi saplamazsak, bu gerçek yöntem davranışını çağıracaktır. spy() yönteminin ana işlevi, gerçek nesnenin belirli yöntemlerini geçersiz kılmasıdır. spy() yönteminin işlevlerinden biri, belirli bir yöntemin çağrılmasını doğrulamasıdır.
Mockito sınıfında iki tür spy() yöntemi mevcuttur:
Sözdizimi: casus(T nesnesi)
Sözdizimi: casus(Sınıf classToSpy)
Aşağıdaki kod parçacığı spy() yönteminin nasıl kullanılacağını gösterir:
List spyArrayList = spy(ArrayList.class);
Mockito sıfırlama() yöntemi
Mockito reset() yöntemi, sahteleri sıfırlamak için kullanılır. Esas olarak konteyner enjekte edilmiş modellerle çalışmak için kullanılır. Reset() yöntemi genellikle kodun uzun olmasına ve testlerin kötü olmasına neden olur. Reset() yöntemini kullanmak yerine yeni modeller oluşturmak daha iyidir. Reset() yönteminin testlerde nadiren kullanılmasının nedeni budur.
Reset() yönteminin imzası:
piton yılanı vs anakonda
public static void reset(T ... mocks) { MOCKITO_CORE.reset(mocks); }
Mockito validNoMoreInteractions() yöntemi
Verilen modellerden herhangi birinin doğrulanmamış etkileşime sahip olup olmadığını kontrol etmek için kullanılır. Tüm sahteyi doğruladıktan sonra, sahtelerde başka hiçbir şeyin çağrılmadığından emin olmak için bu yöntemi kullanabiliriz. Ayrıca test yönteminden önce, örneğin setup(), @Before yönteminde veya yapıcıda gerçekleşen doğrulanmamış çağrıları da algılar. İsteğe bağlı bir yöntemdir ve her testte kullanmamıza gerek yoktur.
VerifyNoMoreInteractions() yönteminin imzası şöyledir:
public static void verifyNoMoreInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); }
Mockito validZeroInteractions() yöntemi
Verilen modellerde herhangi bir etkileşimin meydana gelmediğini doğrular. Ayrıca test yönteminden önce, örneğin setup(), @Before yönteminde veya yapıcıda gerçekleşen çağrıları da algılar.
VerifyZeroInteractions() yönteminin imzası şöyledir:
public static void verifyZeroInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); }
Mockito doThrow() yöntemi
Bir istisna atmak için geçersiz bir yöntemin ne zaman saplanacağı zaman kullanılır. Her yöntem çağrısı için yeni bir istisna örneği oluşturur. Aşağıda gösterildiği gibi, Mockito sınıfında farklı parametrelere sahip iki tür doThrow() yöntemi vardır:
doThrow() yönteminin imzası:
public static Stubber doThrow(Throwable toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsException(toBeThrown)); }
Sözdizimi: doThrow(Atılacak Sınıf)
doThrow() yönteminin imzası:
public static Stubber doThrow(Class toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsExceptionClass(toBeThrown)); }
Mockito doCallRealMethod() yöntemi
Bir yöntemin gerçek uygulamasını çağırmak istediğimizde kullanılır. Başka bir deyişle, bir nesnenin kısmi maketlerini oluşturmak için kullanılır. Gerçek yöntemleri çağırmak gibi nadir durumlarda kullanılır. Spy() yöntemine benzer ve tek farkı karmaşık kodlarla sonuçlanmasıdır.
doCallRealMethod() yönteminin imzası şöyledir:
public static Stubber doCallRealMethod() { return MOCKITO_CORE.doAnswer(new CallsRealMethods()); }
Mockito doAnswer() yöntemi
Genel bir Cevap türüyle geçersiz bir yöntemi saplamak istediğimizde kullanılır. doAnswer() yönteminin imzası:
public static Stubber doAnswer(Answer answer) { return MOCKITO_CORE.doAnswer(answer); }
Mockito doNothing() yöntemi
Geçersiz yöntemleri hiçbir şey yapmayacak şekilde ayarlamak için kullanılır. doNothing() yöntemi nadir durumlarda kullanılır. Varsayılan olarak sahte örneklerdeki void yöntemleri hiçbir şey yapmaz, yani hiçbir görev gerçekleştirilmez.
doNothing() yönteminin imzası:
public static Stubber doNothing() { return MOCKITO_CORE.doAnswer(new DoesNothing()); }
Mockito doReturn() yöntemi
Mockito.when(object) öğesini kullanamadığımız nadir durumlarda kullanılır. Mockito.when(object) yöntemi saplama için her zaman önerilir çünkü argüman türü açısından güvenlidir ve doReturn() yöntemiyle karşılaştırıldığında daha okunabilirdir.
doReturn() yönteminin imzası:
public static Stubber doReturn(Object toBeReturned) { return MOCKITO_CORE.doAnswer(new Returns(toBeReturned)); }
Mockito inOrder() yöntemi
Sahtelerin belirli bir sırayla doğrulanmasına izin veren nesneler oluşturmak için kullanılır. Tüm etkileşimleri doğrulamamız gerekmediğinden, sırayla yapılan doğrulama daha esnektir. Yalnızca test etmekle ilgilenen etkileşimleri (sırayla) doğrulamamız gerekir. Sıralı doğrulamayla ilgili taklitleri geçen bir inOrder nesnesi oluşturmak için inOrder() yöntemini de kullanabiliriz.
Mockito.inOrder() yönteminin imzası:
public static InOrder inOrder(Object... mocks) { return MOCKITO_CORE.inOrder(mocks); }
MockitognorsStubs() yöntemi
Doğrulama için verilen modellerin saplanmış yöntemlerini göz ardı etmek için kullanılır. VerifyNoMoreInteractions() veya validation inOrder() yöntemleriyle kullanışlıdır. Ayrıca, saplanmış çağrıların gereksiz doğrulamasının önlenmesine de yardımcı olur.
İgnoreStubs() yönteminin imzası şöyledir:
Java karakterini int'ye çevirme
public static Object[] ignoreStubs(Object... mocks) { return MOCKITO_CORE.ignoreStubs(mocks); }
Mockito times() yöntemi
Yöntem çağrılarının tam sayısını doğrulamak için kullanılır; bu, bir yöntemin kaç kez çağrıldığını bildirdiği anlamına gelir. times() yönteminin imzası:
public static VerificationMode times(int wantedNumberOfInvocations) { return VerificationModeFactory.times(wantedNumberOfInvocations); }
Mockito asla() yöntemi
Etkileşimin gerçekleşmediğini doğrulamak için kullanılır. Never() yönteminin imzası:
public static VerificationMode never() { return times(0); }
Mockito atLeastOnce() yöntemi
Çağrıyı en az bir kez doğrulamak için kullanılır; bu, yöntemin en az bir kez çağrılması gerektiği anlamına gelir.
atLeastOnce() yönteminin imzası:
public static VerificationMode atLeastOnce() { return VerificationModeFactory.atLeastOnce(); }
Mockito atLeast() yöntemi
Çağrıyı en az x kez doğrulamak için kullanılır. Örneğin, atLeast(3) verilmesi, yöntemin en az üç kez çağrılacağı anlamına gelir.
atLeast() yönteminin imzası:
public static VerificationMode atLeast(int minNumberOfInvocations) { return VerificationModeFactory.atLeast(minNumberOfInvocations); }
Mockito atMost() yöntemi
Çağrıyı en fazla x kez doğrulamak için kullanılır. Örneğin, atMost(3)'ün verilmesi, yöntemin maksimum üç kez çağrılacağı anlamına gelir.
atMost() yönteminin imzası:
public static VerificationMode atMost(int maxNumberOfInvocations) { return VerificationModeFactory.atMost(maxNumberOfInvocations); }
Mockito çağrıları() yöntemi
Sırayla açgözlü olmayan bir doğrulamaya izin verir. Yalnızca inOrder() doğrulama yöntemiyle kullanılabilir. Örneğin, inOrder.verify(mock, calls(3)).xyzMethod('...');
call() yönteminin imzası şöyledir:
public static VerificationMode calls( int wantedNumberOfInvocations ){ return VerificationModeFactory.calls( wantedNumberOfInvocations ); }
Yalnızca Mockito() yöntemi
Verilen yöntemin çağrılan tek yöntem olup olmadığını kontrol eder. only() yönteminin imzası:
pandanın pivotu
public static VerificationMode only() { return VerificationModeFactory.only(); }
Mockito timeout() yöntemi
Mockito'nun zaman aşımı ile doğrulama yapmasına olanak tanır. Doğrulamaya, hemen başarısız olmak yerine, belirli bir etkileşim için belirli bir süre beklemesi talimatını verir. Mevcut durumlarda test yapmak için yararlı olabilir.
timeout() yöntemi after() yönteminden farklıdır; after() yöntemi nihai sonuç bildirilmediği sürece tüm süreyi beklerken timeout() yöntemi doğrulama geçer geçmez duracaktır. Testlerde nadiren kullanılır.
timeout() yönteminin imzası:
public static VerificationWithTimeout timeout(long millis) { return new Timeout(millis, VerificationModeFactory.times(1)); }
() yönteminden sonra Mockito
Mockito'nun belirli bir süre boyunca doğrulama yapmasını sağlar. After() yönteminin timeout() yönteminden farklı olduğunu daha önce tartışmıştık.
After() yönteminin imzası:
public static VerificationAfterDelay after(long millis) { return new After(millis, VerificationModeFactory.times(1)); }
Mockito validateMockitoUsage() yöntemi
Mockito çerçevesinin geçersiz kullanımını tespit etmek amacıyla çerçeve durumunu açıkça doğrulamak için kullanılır. Kullanımı her zaman doğruladığı için Mockito'nun isteğe bağlı bir özelliğidir. Hem yerleşik çalıştırıcı (MockitoJUnitRunner) hem de kural (MockitoRule), her test yönteminden sonra validateMockitoUsage() yöntemini çağırır.
validateMockitoUsage() yönteminin imzası şöyledir:
public static void validateMockitoUsage() { MOCKITO_CORE.validateMockitoUsage(); }
Mockito withSettings() yöntemi
Ek sahte ayarlara sahip modeller oluşturmak için kullanılır. Testlerde ara sıra kullanılmalıdır. withSettings() yöntemini kullanmak yerine basit örnekler kullanarak basit testler oluşturun. MockSettings'i kullanmanın ana nedenleri:
- MockSetting'i kullanarak gerektiğinde diğer sahte ayarları kolayca ekleyebiliriz.
- Kodu bozmadan farklı sahte ayarları birleştirir.
withSettings() yönteminin imzası şöyledir:
public static MockSettings withSettings() { return new MockSettingsImpl().defaultAnswer(RETURNS_DEFAULTS); }