Mockito - Mockito - Wikipedia

Mockito
Geliştirici (ler)Szczepan Faber, Brice Dutheil, Rafael Winterhalter, Tim van der Lippe ve diğerleri.
Kararlı sürüm
3.3.11 / 14 Mayıs 2020; 7 ay önce (2020-05-14)[1]
Depogithub.com/ mockito/ mockito
YazılmışJava
TürTest yapmak
LisansMIT Lisansı[2]
İnternet sitesisite.mockito.org

Mockito bir açık kaynak test çerçevesi için Java altında yayınlandı MIT Lisansı.[3][4] Çerçeve, çift ​​test nesneler (sahte nesneler ) içinde otomatik birim testleri amacıyla test odaklı geliştirme (TDD) veya davranış odaklı geliştirme (BDD).

Çerçevenin adı ve logosu bir oyun. mojitos, bir tür içecek.

Özellikleri

Mockito, geliştiricilerin web sitesinin davranışını test edilen sistem (SUT) önceden beklentiler oluşturmadan.[5] Eleştirilerinden biri sahte nesneler test kodunun test edilen sisteme sıkı bir şekilde bağlanmasıdır.[6] Mockito, bekle-çalıştır-doğrula modelini ortadan kaldırmaya çalışır[7] beklentilerin özelliklerini kaldırarak. Mockito ayrıca bazı ek açıklamalar sağlar. Genelge kodu.[8]

Kökenler

Mockito, sözdizimi ve işlevselliğini genişleterek başladı. EasyMock.[9][10]

Misal

Bunu düşün ayrılmış Merhaba dünya programı; Biz olabilir ünite testi bazı parçaları kullanarak sahte nesneler diğer parçalar için.

paket org.examples;ithalat java.io.IOException;halka açık sınıf HelloApplication {   halka açık statik arayüz Greeter {      Dize getGreeting(Dize konu);      Dize getIntroduction(Dize aktör);   }      halka açık statik sınıf MerhabaGreeter uygular Greeter {      özel Dize Merhaba;      özel Dize segmenter;            halka açık MerhabaGreeter(Dize Merhaba, Dize segmenter) {         bu.Merhaba = Merhaba;         bu.segmenter = segmenter;      }      halka açık Dize getGreeting(Dize konu) {         dönüş Merhaba + " " + konu;       }      halka açık Dize getIntroduction(Dize aktör) {         dönüş aktör+segmenter;      }   }      halka açık statik arayüz Merhaba Etkinleştirilebilir {      geçersiz Merhaba de(Dize aktör, Dize konu) atar IOException;   }      halka açık statik sınıf HelloAction uygular Merhaba Etkinleştirilebilir {      özel Greeter merhaba;      özel Eklenebilir merhaba yazar;      halka açık HelloAction(Greeter merhaba, Eklenebilir merhaba yazar) {         Süper();         bu.merhaba = merhaba;         bu.merhaba yazar = merhaba yazar;      }      halka açık geçersiz Merhaba de(Dize aktör, Dize konu) atar IOException {          merhaba yazar.eklemek(merhaba.getIntroduction(aktör)).eklemek(merhaba.getGreeting(konu));      }   }   halka açık statik geçersiz ana(Dize... argümanlar) atar IOException {      yeni HelloAction(yeni MerhabaGreeter("Merhaba", ": "), Sistem.dışarı).Merhaba de("uygulama", "dünya");   }}

HelloApplication'ın başlatılmasının sonucu şu olacaktır:

uygulama: merhaba dünya

HelloActable bileşeni için birim testi şöyle görünebilir:

paket org.examples;statik içe aktar org.mockito.Matchers.any;statik içe aktar org.mockito.Matchers.eq;statik içe aktar org.mockito.Mockito.mock;statik içe aktar org.mockito.Mockito.times;statik içe aktar org.mockito.Mockito.verify;statik içe aktar org.mockito.Mockito.when;ithalat org.junit.Before;ithalat org.junit.Test;ithalat org.examples.HelloApplication.HelloActable;ithalat org.examples.HelloApplication.HelloAction;ithalat org.examples.HelloApplication.Greeter;halka açık sınıf HelloActionUnitTest {      Greeter merhabaGreeterMock;   Eklenebilir merhabaWriterMock;   Merhaba Etkinleştirilebilir merhabaAksiyon;      @Önce   halka açık geçersiz kurulum() {      merhabaGreeterMock = alay etmek(Greeter.sınıf);      merhabaWriterMock = alay etmek(Eklenebilir.sınıf);      merhabaAksiyon = yeni HelloAction(merhabaGreeterMock, merhabaWriterMock);   }      @Ölçek   halka açık geçersiz testSayHello() atar İstisna {      ne zaman(merhabaWriterMock.eklemek(hiç(Dize.sınıf))).thenReturn(merhabaWriterMock);      ne zaman(merhabaGreeterMock.getIntroduction(eq("ünite testi"))).thenReturn("ünite testi : ");      ne zaman(merhabaGreeterMock.getGreeting(eq("dünya"))).thenReturn("Merhaba dünya");            merhabaAksiyon.Merhaba de("ünite testi", "dünya");            Doğrulayın(merhabaGreeterMock).getIntroduction(eq("ünite testi"));      Doğrulayın(merhabaGreeterMock).getGreeting(eq("dünya"));      Doğrulayın(merhabaWriterMock, zamanlar(2)).eklemek(hiç(Dize.sınıf));      Doğrulayın(merhabaWriterMock, zamanlar(1)).eklemek(eq("ünite testi : "));      Doğrulayın(merhabaWriterMock, zamanlar(1)).eklemek(eq("Merhaba dünya"));   }}

Greeter ve Appendable arabirimleri için sahte nesneler kullanır ve dolaylı olarak sonraki kullanım durumunu varsayar:

unitTest: merhaba dünya

Greeter ile birlikte HelloActable'ı test etmek için entegrasyon testi kodu aşağıdaki gibi görünebilir:

paket org.examples;statik içe aktar org.mockito.Matchers.any;Statik içe aktar org.mockito.Matchers.eq;Statik içe aktar org.mockito.Mockito.mock;Statik içe aktar org.mockito.Mockito.times;statik içe aktar org.mockito.Mockito.verify;statik içe aktar org.mockito.Mockito.when;ithalat org.junit.Before;ithalat org.junit.Test;ithalat org.examples.HelloApplication.HelloActable;ithalat org.examples.HelloApplication.HelloAction;ithalat org.examples.HelloApplication.Greeter;ithalat org.examples.HelloApplication.HelloGreeter;halka açık sınıf HelloActionIntegrationTest {   Merhaba Etkinleştirilebilir merhabaAksiyon;   Greeter merhaba;   Eklenebilir merhabaWriterMock;      @Önce   halka açık geçersiz kurulum() {      merhaba = yeni MerhabaGreeter("Hoşgeldiniz", " diyor ");      merhabaWriterMock = alay etmek(Eklenebilir.sınıf);      merhabaAksiyon = yeni HelloAction(merhaba, merhabaWriterMock);   }      @Ölçek   halka açık geçersiz testSayHello() atar İstisna {      ne zaman(merhabaWriterMock.eklemek(hiç(Dize.sınıf))).thenReturn(merhabaWriterMock);      merhabaAksiyon.Merhaba de("entegrasyon testi", "Evren");      Doğrulayın(merhabaWriterMock, zamanlar(2)).eklemek(hiç(Dize.sınıf));      Doğrulayın(merhabaWriterMock, zamanlar(1)).eklemek(eq("entegrasyonTest diyor"));      Doğrulayın(merhabaWriterMock, zamanlar(1)).eklemek(eq("evrene hoş geldiniz"));   }}

Sahte nesneleri yalnızca Eklenebilir arabirimler yerine kullanır, diğer (HelloActable ve Greeter) arabirimler için gerçek uygulamaları kullanır ve dolaylı olarak sonraki kullanım durumunu varsayar:

entegrasyonTest evren hoş geldiniz diyor

HelloActionUnitTest ve HelloActionIntegrationTest sınıflarının import ifadelerinden de görülebileceği gibi, bazı Mockito kavanozlarını ve JUnit kavanozlarını sınıf yolu test sınıflarını derleyip çalıştırabilmek.

Ayrıca bakınız

Referanslar

  1. ^ "Sürümler · mockito / mockito · GitHub". Alındı 21 Mayıs 2020.
  2. ^ "Lisans · mockito / mockito Wiki · GitHub". Alındı 30 Ağustos 2019.
  3. ^ "Altı kolay örnekte Mockito". 2009. Alındı 2012-10-05.
  4. ^ "Java için en iyi sahte çerçeve nedir?". Alındı 2010-12-29.
  5. ^ "Özellikler ve Motivasyonlar". Alındı 2010-12-29.
  6. ^ Fowler, Martin (2007). "Taklitler Saplama Değildir". Alındı 2010-12-29.
  7. ^ Faber, Szczepan. "Son istek". Alındı 2010-12-29.
  8. ^ Kaczanowski, Tomek. "Mockito - Açık Kaynak Java Mocking Framework". Alındı 2013-09-17.
  9. ^ Faber, Szczepan. "Mockito". Alındı 2010-12-29.
  10. ^ "Mockito Ana Sayfası". Alındı 2010-12-29.

Dış bağlantılar