logo

Mockito Yöntemleri

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:

    Class ile make() yöntemi:Somut bir sınıfın veya bir arayüzün sahte nesnelerini oluşturmak için kullanılır. Parametre olarak bir sınıf veya arayüz adını alır.
    Sözdizimi: sahte(Sınıf classToMock)Cevapla birlikte make() yöntemi:Belirli bir prosedürle bir sınıfın veya arayüzün sahte nesnelerini oluşturmak için kullanılır. Eski sistemlerle çalışırken kullanılabilecek gelişmiş bir sahte yöntemdir. Yanıt'ı sınıf veya arayüz adıyla birlikte parametre olarak alır. Yanıt, önceden yapılandırılmış sahte yanıtların bir listesidir.
    Sözdizimi: maket(Sınıf classToMock, Yanıt varsayılanYanıt)MockSettings ile mock() yöntemi:Bazı standart dışı ayarlarla sahte nesneler oluşturmak için kullanılır. MockSettings'i sınıf veya arayüz adıyla birlikte ek bir ayar parametresi olarak alır. MockSettings, ek ayarlarla sahte nesnelerin oluşturulmasına olanak tanır.
    Sözdizimi: maket(Sınıf classToMock, MockSettings maketSettings)ReturnValues ​​ile mock() yöntemi:Belirli bir sınıfın veya arayüzün sahte nesnelerinin oluşturulmasına olanak tanır. Artık ReturnValues'un yerini Answer ile değiştirildiği için kullanımdan kaldırıldı.
    Sözdizimi: maket(Sınıf classToMock, ReturnValues ​​returnValues)String ile make() yöntemi:Sahte adları belirterek sahte nesneler oluşturmak için kullanılır. Hata ayıklamada sahte nesneleri adlandırmak yararlı olabilir ancak büyük ve karmaşık kodlarla kullanmak kötü bir seçimdir.
    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:

    doğrulama() yöntemi:Belirli bir davranışın bir kez gerçekleştiğini doğrular.
    Sözdizimi: doğrulamak(T sahte)VerificationMode ile doğrulama() yöntemi:Bazı davranışların en az bir kez, tam sayıda kez gerçekleştiğini veya hiçbir zaman gerçekleşmediğini doğrular.
    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:

    casus() yöntemi:Gerçek nesnenin bir casusunu yaratır. Casusluk yöntemi, saplanmadıkça gerçek yöntemleri çağırır. Örneğin eski kodlarla uğraşırken gerçek casusları dikkatli ve ara sıra kullanmalıyız.
    Sözdizimi: casus(T nesnesi)Class ile spy() yöntemi:Bir nesne yerine sınıfa dayalı bir casus nesnesi oluşturur. spy(T object) yöntemi, somutlaştırılamadığı için soyut sınıfları gözetlemek için özellikle kullanışlıdır.
    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:

    Throwable ile doThrow() yöntemi:Bu yöntem, geçersiz bir yöntemi bir istisna ile saplamak istediğimizde kullanılır. Sözdizimi: doThrow(Atılabilir toBeThrown)
    doThrow() yönteminin imzası:
 public static Stubber doThrow(Throwable toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsException(toBeThrown)); } 
    Class ile doThrow() yöntemi:Bu yöntem, belirtilen sınıfın bir istisnasını atmak için geçersiz bir yöntemi saplamak istediğimizde kullanılır.
    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); }