Ev Kişisel Finans Kullanarak JUnit - mankenler

Kullanarak JUnit - mankenler

İçindekiler:

Video: Java - JUnit testing in Eclipse 2024

Video: Java - JUnit testing in Eclipse 2024
Anonim

JUnit , Java birimlerini (diğer bir deyişle Java sınıfları) sınamak için standart bir çerçevedir. JUnit, testlerin bir kısmını test etmek için otomatikleştirilebilir.

Üç değerli bir enum türü oluşturduğunuzu düşünün: YEŞİL, SARI ve KIRMIZI. Liste 1 kodu içerir:

Liste 1

public enum SignalColor {YEŞİL, SARI, KIRMIZI}

Bir trafik ışığının durumu vardır (trafik ışığı rengi için süslü bir isimdir).

genel sınıf TrafficLight {SignalColor state = Sinyal Renkli. KIRMIZI;

Trafik ışığının mevcut durumunu biliyorsanız, trafik ışığının hangi durumda olacağına karar verebilirsiniz.

public void nextState () {anahtar (devlet) {case KIRMIZI: state = SignalColor. YEŞİL; break; case sarı: state = SignalColor. KIRMIZI; break; YEŞİL durumda: state = SignalColor. SARI; break; Varsayılan: state = SinyalSayısı. KIRMIZI; break;}}

Ayrıca trafik ışığının durumunu belirli sayıda değiştirebilirsiniz:

Hepsini bir araya getirirseniz, TrafficLight sınıfınız olur. Liste 2'de.

Listeleme 2

public class TrafficLight {SignalColor state = SignalColor. KIRMIZI; public void nextState () {anahtar (durum) {durum KIRMIZI: devlet = SignalColor. YEŞİL; break; case sarı: state = SignalColor. KIRMIZI; break; YEŞİL durumda: state = SignalColor. SARI; break; Varsayılan: state = SinyalSayısı. KIRMIZI; break ();} public void change (int numberOfTimes) {for (int i = 0; i
Eski günlerde kod yazmaya devam edebilirdiniz, daha fazla sınıf, nextState'i çağırıp Liste 2'deki yöntemleri değiştirin. Ardından, birkaç aylık kodlamadan sonra, çalışmalarınızı test etmek için duraklatırsınız.

Ve ne sürpriz! Testleriniz sefil bir şekilde başarısız olur! Testi bir veya iki günden fazla ertelememelisin. Erken test edin ve sık sık test edin!

Test hakkında bir felsefe yazdıkça her bir yığın sınamanız gerektiğini söylüyor. Elbette, "kod parçası" ifadesi çok bilimsel değildir. Bu öğleden sonra yaptıkları "kod parçasını test etme" hakkında konuşan geliştiricilerin dolaştırılması için hiçbir şey olmazdı. Her kod parçasını bir

birim aramak ve geliştiricileri birim sınaması hakkında konuşmalarını sağlamak daha iyidir. Test için en yaygın birim bir sınıftır. Tipik bir Java geliştiricisi, sınıfın kodu yazılır yazmaz her sınıfa test eder.

Öyleyse nasıl bir sınıfta test yapmaya çalışıyorsun? Bir acemi, ek bir sınıf (ana yöntemi içeren bir sınıf) yazarak TrafficLight sınıfını test edebilir. Temel yöntem TrafficLight örneğini oluşturur, nextState'i çağırır ve yöntemleri değiştirir ve sonuçları görüntüler.Acemi, sonuçları inceler ve bunları beklenen bazı değerlerle karşılaştırır.

Düzinelerce, yüzlerce hatta binlerce sınıfın temel yöntemlerini yazdıktan sonra, acemi (şu an tam teşekküllü bir geliştirici) test yordamından bıkmış ve test prosedürünü otomatikleştirmenin yollarını arıyor. Yorulup gitmese de, bir geliştirici bir geliştiricinin elle kodlu testlerini çözmeye çalışabilir. Testler oluşturmak için standartlar veya kılavuzlar bulunmaksızın, bir başka geliştiricinin testlerini okumak ve anlamak zor ve sıkıcı olabilir.

Böylece JUnit kurtarmaya geliyor!.

Eclipse'in JUnit kullanımını nasıl otomatikleştirdiğini öğrenmek için aşağıdakileri yapın:

Listeleme 1 ve 2'yi içeren bir Eclipse projesi oluşturun.

  1. Windows'da, Paket Explorer'ın TrafficLight'ını sağ tıklatın. java şubesi. Bir Mac'te, Paket Gezgini'nin TrafficLight'ını kontrol tıklayın. java şubesi.

  2. Bir bağlam menüsü görüntülenir.

    Bağlam menüsünde Yeni → JUnit Test Case'u seçin.

  3. Sonuç olarak Yeni JUnit Test Case iletişim kutusu görünür.

    Yeni JUnit Test Case iletişim kutusunun altındaki İleri'yi tıklayın.

  4. Sonuç olarak, Yeni JUnit Test Case iletişim kutusunun ikinci sayfasını görürsünüz. İkinci sayfada, TrafficLight sınıfına (doğrudan veya dolaylı olarak) ait yöntemler listelenir.

    Trafik Işareti etiketli onay kutusuna bir onay işareti koyun.

  5. Sonuç olarak, Eclipse, nextState () ve change (int) onay kutularına onay işaretlerini yerleştirir. Yeni JUnit Test Case iletişim kutusunun altındaki Son'u tıklayın.

  6. JUnit resmi olarak Java'nın bir parçası değildir. Bunun yerine kodunuz için testler oluşturmanıza yardımcı olacak kendi sınıfları ve yöntemleri seti ile birlikte gelir. Son'u tıklattıktan sonra Eclipse, projenizin bir parçası olarak JUnit sınıflarını ve yöntemlerini eklemek isteyip istemediğinizi sorar.

    Aşağıdaki İşlemi Yap ve JUnit 4 Kitaplığı Yapı Yolu'na Ekle'yi seçin. Daha sonra Tamam'ı tıklayın.

  7. Eclipse diyalog kutularını kapatır ve projeniz yepyeni bir TrafficLightTest'e sahiptir. java dosyası. Dosyanın kodu Liste 3'de gösterilmiştir.

    Liste 3'teki kod iki test içerir ve her iki testte hoş olmayan sondaj başarısız bir yöntem çağrıları bulunur. Eclipse, bu testlerin sonuç vermesi için kod eklemenizi istiyor.

    Başarısız yöntem çağrılarını kaldırın. Başarısız yöntem çağrılarının yerine, Liste 4'te koyu renkte gösterilen kodu yazın.

  8. Paket Explorer'da, TrafficLightTest öğesini sağ tıklayın (Windows'ta) veya control tuşuyla tıklayın (Mac'te). java şubesi. Ortaya çıkan bağlam menüsünde, Farklı Çalıştır → JUnit Test'i seçin.

  9. Eclipse, JUnit test çerçevesinin birden fazla çeşidine sahip olabilir. Eğer öyleyse, aşağıdaki gibi bir iletişim kutusu görebilirsiniz. Bunu yaparsanız, Eclipse JUnit Başlatıcısı'nı seçin ve Tamam'ı tıklatın.

    Sonuç olarak, Eclipse TrafficLightTest'i çalıştırır. java programı. Eclipse çalıştırmanın sonucunu kendi Package Explorer'ın önünde görüntüler. Sonuç hatasız ve başarısız değil. Whew!

    Liste 3

import static org. junit. İddia. *; ithalat ofisi. junit. Ölçek; kamu sınıfı TrafficLightTest {@Test public void testNextState () {başarısız ("henüz gerçekleştirilmedi");} @Test public void testChange () {başarısız ("henüz gerçekleştirilmedi");}}

Listeleme 4

içe aktarma statik org.junit. İddia. *; ithalat ofisi. junit. Ölçek; genel sınıf TrafficLightTest {@Test public void testNextState () {

TrafficLight ışığı = new TrafficLight (); assertEquals (Sinyal Renkli, KIRMIZİ, hafif devlet); ışığı. nextState (); assertEquals (SignalColor. YEŞİL, hafif devlet); ışığı. nextState (); assertEquals (SignalColor. SARI, ışık durumu); ışığı. nextState (); assertEquals (Sinyal Renkli, KIRMIZİ, hafif devlet); } @Test public void testChange () { TrafficLight ışığı = yeni TrafficLight (); ışığı. değişim (5); assertEquals (SignalColor. SARI, ışık durumu); }} Farklı Çalıştır → JUnit Test'i seçtiğinizde, Eclipse ana yöntemi aramaz. Bunun yerine, Eclipse @Test ve benzeri diğer şeyler ile başlayan yöntemleri arar. Eclipse @Test yöntemlerinin her birini yürütür.

@Test gibi şeyler Java

ek açıklamalar 'dır. Listeleme 4, @ Test yöntemleri içerir: testNextState ve testChange. TestNextState yöntemi, TrafficLight nextState yöntemini teste sokar. Benzer şekilde, testChange yöntemi TrafficLight değişim yönteminin kaslarını büker.

TestNextState yöntemindeki kodu düşünün. TestNextState yöntemi, TrafficLight sınıfının nextState yöntemini ve JUnit'in assertEquals yöntemini art arda çağırır. AssertEquals yöntemi, iki parametre alır: beklenen bir değer ve gerçek bir değer.

En üstteki assertEquals çağrısında, beklenen değer SignalColor'dur. KIRMIZI. Trafik ışığının KIRMIZI olmasını bekliyorsunuz, çünkü Liste 2'de ışığın durumunu SignalColor değeri ile başlatıyorsunuz. KIRMIZI.

  • En üstteki assertEquals çağrısında, gerçek değer hafiftir. devlet (aslında trafik ışığının durum değişkeninde saklanan renk).

  • Gerçek değer beklenen değere eşitse, assertEquals çağrısı geçer ve JUnit, testNextState yönteminde ifadeleri yürütmeye devam eder.

Ancak gerçek değer beklenen değerden farklıysa, assertEquals başarısız olur ve işlemin sonucu başarısızlığı görüntüler. Örneğin, Liste 4'teki ilk assertEquals çağrısında beklenen değeri değiştirdiğinizde neler olduğunu düşünün:

@Test public void testNextState () {TrafficLight light = new TrafficLight (); assertEquals (SignalColor. SARI, ışık durumu);

Yapımının hemen ardından bir trafik ışığı rengi KIRMIZI, SARI değil. Yani testNextState yöntemi yanlış bir onaylama içerir ve Run As yapmanın sonucu → JUnit çocuğun kötü rapor kartına benziyor.

Liste 4

'daki testChange önce testNextState olması JUnit testChange çalıştırmadan önce testNextState yürütür garanti etmez. Üç tane @Test yöntemi varsa, JUnit en üstten en alta, en alttan en üste, orta yöntemden en üste en altına veya en alttan en altına veya herhangi bir sırayla yürütebilir. JUnit başka bir testin parçalarını çalıştırmak için bir testin ortasında duraklayabilir. Bu nedenle başka bir test yazarken bir testin sonucuyla ilgili varsayımlarda bulunmamalısınız. Herhangi bir test başlamadan önce bazı ifadelerin yapılmasını isteyebilirsiniz.Bunu yaparsanız, bu ifadeleri setUp adlı bir yöntemle koyun ve bu yöntemi @ Öncesi açıklama ile önsözleyin. (Yukarıdaki Liste 2'deki 3. Adımdaki şekildeki

setUp () onay kutusuna bakın.) İşte haberler: Tüm assertEquals yöntemleri eşit oluşturulmamıştır! Projenizin koduna bir Sürücü sınıfı eklemeyi düşünün. "Sürücü sınıfı" bir yazıcı sürücüsü veya kazık sürücüsü anlamına gelmez. Bu, trafik ışığına yaklaşan bir araba süren bir kişi demektir. Ayrıntılar için bkz. Liste 5.

Listeleme <599> public class Driver {public double velocity (TrafficLight ışığı) {switch (açık durum) {case RED: return 0 0; case SARI: dönüş 10 0; case YEŞİL: dön 30. 0; varsayılan: 0 döndürür 0;}}}

Işık kırmızı olduğunda, sürücünün hızı 0'dır. Işık sarı olduğunda, otomobil 10'uncu bir kasaya yavaşlıyor. Işık yeşil olduğunda, (Bu örnekte, hız birimleri önem taşımıyor, saatte kilometre, saatte kilometre, ya da her ne olursa olsun.) Önemli olan tek yol, araba Boston veya New York'taysa, bu durumda YELLOW hızı YEŞİL için olan hızdan çok daha yüksek olmalı ve RED için hız 0 olmamalıdır.)

için JUnit testleri oluşturmak için Sürücü sınıfı, bu makalede daha önce listelenen 1-9 arasındaki adımları takip edin, ancak aşağıdaki değişiklikleri yaptığınızdan emin olun:

Adım 2'de, Sürücüyü sağ tıklayın veya control tuşuna basarak tıklayın. TrafficLight yerine java şubesi. java şubesi.

5. Adımda, Sürücü dalına bir onay işareti koyun.

Adım 8'de, Liste 6'da gösterilen DriverTest sınıfını oluşturmak için başarısız yöntem çağrılarını kaldırın. Yazdığınız kod koyu görüntülenir.

  • Liste 6

  • import static org. junit. İddia. *; ithalat ofisi. junit. Ölçek; public class DriverTest {@Test public void testVelocity () {

  • TrafficLight ışığı = yeni TrafficLight ();

ışığı. değişim (7);

Sürücü sürücüsü = yeni Sürücü (); assertEquals (30,0, sürücü hızı (ışık), 0,1); }} Her şey iyi giderse, JUnit testi uçan renklerle geçer. (Daha kesin olmak gerekirse JUnit yeşil renkle geçer!) Dolayısıyla DriverTest'in çalışması yeni veya heyecan verici değildir. Liste 6'daki assertEquals çağrısı heyecan vericidir. Java programında iki çift değeri karşılaştırdığınızda burun eşitliğini bekleme hakkına sahip değilsiniz. Diğer bir deyişle, çift değerlerden biri 30 000000000 olurken, diğer çift değer 30'a 000000001'dir. Bir bilgisayarın her bir çift değeri depolamak için yalnızca 64 biti vardır ve yanlışlıklar burada ve yerde sızar. JUnit'te, çift değerleri karşılaştırmak için assertEquals yöntemi üçüncü bir parametreye sahiptir. Üçüncü parametre, kıpır kıpırdamayı temsil eder. Liste 6'da,

ifadesi assertEquals (30.0, sürücü hızı (ışık), 0. 1);

şunları söylüyor: "Sürücünün gerçek değerini teyit edin. hız (ışık), beklenen değerin 30'unun 0'u 1'inde. 0. Eğer öyleyse, iddia geçer. Değilse, iddia başarısız olur. "

Çift değerler için assertEquals öğesini çağırdığınızda, iyi bir hata payı seçmek zor olabilir.Bu rakamlar, yanlış gidebilecek şeylerin çeşitlerini göstermektedir.

Burada hata farkınız çok küçük.

Orada hata farkınız çok büyük.

Neyse ki, bu DriverTest örneğinde marj 0,1 çok güvenli bir bahistir. İşte neden:

assertEquals testi başarısız olduğunda, 0'dan çok fazla başarısız olur. 1.

Arıza, bir sürücüye sahip olmak demektir. 0,0 ya da 10,0 gibi hız (ışık) değer. 0, Bu örnekte, assertEquals testi geçtiğinde muhtemelen on-the-burun tam eşitlik temsil eder.

Şöförün değeri. hız (ışık), doğrudan Liste Listesindeki 30. 0 kodundan gelir. Aritmetik işlem yapılmaz. Yani şoförün değeri. hız (ışık) ve beklenen 30. 0 değeri tam olarak aynı olmalıdır (veya neredeyse tamamen aynı olmalıdır).

Kullanarak JUnit - mankenler

Editörün Seçimi

Excel Makrolar: Örnek Dosyalar - mankenler

Excel Makrolar: Örnek Dosyalar - mankenler

Excel'deki her makro Makrolar İçin Aptallar kitabı, makronun çalışıp çalışmadığını görmek ve kodu incelemek. Örnek dosyaları kopyalayıp çevrenize yapıştırmak için de kullanabilirsiniz (her makroyu sıfırdan yazmak yerine). Genel olarak, siz ...

Excel SharePoint için hizmetler - aptallar

Excel SharePoint için hizmetler - aptallar

Excel belgelerinin etkileşimli web sayfaları olarak SharePoint'e yayımlanmasını sağlayan mekanizma Excel'dir Hizmetler. Excel Hizmetleri, bu üç bileşeni tanımlamak için daha geniş bir terimdir: Excel Hesaplama Hizmetleri: Excel hizmetlerinin birincil motoru olarak hizmet eder. Bu bileşen, Excel belgelerini yükler, hesaplamaları Excel sayfasında yürütür ve ...

Editörün Seçimi

Dijital Fotoğrafınıza Bir Seçim Çerçevesini Fırçalama

Dijital Fotoğrafınıza Bir Seçim Çerçevesini Fırçalama

Kompleks için Elemanların Seçme Fırçası gibi bir alet kullanın seçim taslakları. Bu araçla, değiştirmek istemediğiniz alanları fırçalayıp bu piksellerin üzerine bir dijital maske koyabilirsiniz. Fırça aracını kullanmak, serbest biçimli anahatları herhangi bir serbest el aracı ile çizmekten çok daha kolaydır. Aşağıdaki adımlar Elements'i kullansa da ...

Adobe Photoshop Elements ile Dijital Fotoğrafın Ekran Görüntüleri Boyutunu Değiştirme - mankenler

Adobe Photoshop Elements ile Dijital Fotoğrafın Ekran Görüntüleri Boyutunu Değiştirme - mankenler

Ekrandaki fotoğraflar için, piksel sayısı (çözünürlük) resmin görüntü boyutunu belirler. Bir dijital fotoğrafın görüntü boyutunu değiştirmek isterseniz, resim dosyasından piksel eklemeli veya pikselleri kaldırmalısınız. (Görüntü boyutunu artırırken piksel eklemenin de resim kalitesini düşürebileceğini unutmayın.) Piksel sayısını değiştirmek için ...

Editörün Seçimi

Bebeklerle Evde Kalmak Baba Kılavuzu - mankenler

Bebeklerle Evde Kalmak Baba Kılavuzu - mankenler

Eğer birincil bakıcıysanız, kova durur sen. Birincil bakıcı olmak büyük bir şirketin başkanı olmak gibidir, yalnızca gülümsemelerde ve sevgide size ödenecek çok istekli, affedici, ama son derece şirin bir müşteriniz vardır. Bebeğinizin ne istediğini bulma Bebeğinizin ne olduğunu anlamaya çalışırken ...

Babamın Bebek Bebekleri İçin

Babamın Bebek Bebekleri İçin

Bir iksir cephaneliği ve İlk aylarda ve yıllardaki losyonlar esastır. Her babamın bebeği düzeltmesinde olması gereken şey-it kiti: Badem veya hindistancevizi yağı: Bebeğinizin nemlendiriciler veya kokulu losyonlara ihtiyacı yoktur. Kuru ciltli ise saf yağ, toksinler ve dolgu maddeleri olmaksızın en iyisidir ...

Bebek Masajının Duygusal Faydaları - mankenler

Bebek Masajının Duygusal Faydaları - mankenler

Bebek masajı çok büyük fayda sağlamaktadır. Bebeğinizin masaj edilmesi ikiniz için olumlu bir duygusal etkiye sahip olabilir. İşte birçok duygusal faydanın birkaç örneği: Masaj, bir ebeveyn veya bakıcı olarak sizin güveni arttırır. Sizinle bebeğiniz arasındaki bağ ve bağlanmayı destekler.