Örnek ile JUnit ErrorCollector @ Kural

İçindekiler:

Anonim

Normal bir senaryoda, testin yürütülmesi sırasında herhangi bir hata tespit ettiğinizde, testi durdurur, hatayı düzeltir ve testi yeniden çalıştırırsınız.

Ancak JUnit'in biraz farklı bir yaklaşımı var. JUnit hata toplayıcı ile, bir sorun bulunduktan veya test başarısız olduktan sonra bile test yürütmeye devam edebilirsiniz. Hata toplayıcı tüm hata nesnelerini toplar ve test yürütme bittikten sonra bunu yalnızca bir kez rapor eder.

Bu eğitimde öğreneceksiniz-

  • JUnit'teki hata toplayıcı nedir?
  • JUnit'te @ Kural nedir?
  • ErrorCollector kullanarak örnek
  • JUnit ErrorCollector'ın Faydaları

Neden Hata Toplayıcı kullanmalı?

Bir test komut dosyası yazarken, ağ hatası, onaylama hatası veya başka bir nedenle herhangi bir kod satırı başarısız olsa bile tüm testleri yürütmek istersiniz. Bu durumda, JUnit tarafından sağlanan "hata toplayıcı" olarak bilinen özel bir özelliği kullanarak test komut dosyasını çalıştırmaya devam edebilirsiniz.

Bunun için JUnit, bir hata toplayıcı nesnesi oluşturmak için kullanılan @ Kural ek açıklamasını kullanır . Hata toplayıcı nesnesi oluşturulduktan sonra, addError (Throwable error) yöntemini kullanarak tüm hataları nesneye kolayca ekleyebilirsiniz . Bildiğiniz gibi Throwable , Java'daki Exception ve Error sınıfının süper sınıfıdır . Bu şekilde hatalar eklediğinizde, bu hatalar JUnit test sonucuna kaydedilir.

Bir Hata Toplayıcıya tüm hataları eklemenin yararı, tüm hataları tek seferde doğrulayabilmenizdir. Ayrıca, komut dosyası ortada başarısız olursa, yine de yürütmeye devam edebilir.

Not : Basit assert veya dene / yakala bloğu kullanılması durumunda, hata toplayıcı yöntemini kullanmak mümkün olmayacaktır.

Basit kod

Hata Toplayıcı hakkında daha fazla bilgi edinmek için, Hata Toplayıcı nesnesinin nasıl oluşturulacağını ve sorunu izlemek için bu nesnedeki tüm hataları nasıl ekleyeceğinizi gösteren aşağıdaki kod örneğine bakın:

paket guru99.junit;org.junit.Rule'u içe aktar;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Kuralpublic ErrorCollector toplayıcı = new ErrorCollector ();@Ölçekpublic void örneği () {collector.addError (new Throwable ("İlk satırda bir hata var"));collector.addError (new Throwable ("İkinci satırda bir hata var"));collector.checkThat (getResults (),not (containsString ("burada bir hata")));// tüm kod satırları çalışacak ve sonunda birleşik bir hata oluşacaktıroturum açın.}}

JUnit'te @ Kural nedir?

JUnit, @rule açıklamasını kullanarak testlerin, Test Senaryosunun veya test paketinin özel bir şekilde ele alınmasını sağlar . @Rule kullanarak, testin davranışını kolayca ekleyebilir veya yeniden tanımlayabilirsiniz.

JUnit API tarafından sağlanan ve bir testçinin kullanabileceği ve hatta kendi kuralımızı yazabileceğiniz birkaç yerleşik kural vardır.

Hata Toplayıcı ile birlikte @rule açıklamasının nasıl kullanılacağını gösteren aşağıdaki kod satırına bakın:

@Kuralpublic ErrorCollector toplayıcı = new ErrorCollector ();

ErrorCollector kullanarak örnek

Hata toplayıcıyı anlamak için, tüm hataları toplamak için bir sınıf ve bir kural oluşturalım. AddError (atılabilir) kullanarak tüm hataları buraya ekleyeceksiniz.

"Hata Toplayıcı nesnesi" oluşturmaktan başka hiçbir şey olmayan bir kural oluşturan aşağıdaki koda bakın. Sonunda sorunu bildirmek için tüm hataları eklemek için ayrıca kullanılır:

ErrorCollectorExample.java

paket guru99.junit;import org.junit.Assert;org.junit.Rule'u içe aktar;import org.junit.Test;import org.junit.rules.ErrorCollector;public class ErrorCollectorExample {@Kuralpublic ErrorCollector toplayıcı = new ErrorCollector ();@Ölçekpublic void örneği () {collector.addError (new Throwable ("İlk satırda bir hata var"));collector.addError (new Throwable ("İkinci satırda bir hata var"));System.out.println ("Merhaba");Deneyin {Assert.assertTrue ("A" == "B");} catch (Fırlatılabilir t) {collector.addError (t);}System.out.println ("Dünya !!!!");}}

TestRunner.java

Bir test çalıştırıcısına yukarıdaki test sınıfını ekleyelim ve tüm hataları toplamak için çalıştıralım. Aşağıdaki koda bakın:

paket guru99.junit;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;public class TestRunner {public static void main (String [] args) {Sonuç sonucu = JUnitCore.runClasses (ErrorCollectorExample.class);for (Hata hatası: result.getFailures ()) {System.out.println (fail.toString ());}System.out.println ("Result ==" + result.wasSuccessful ());}}

Çıktı:

Tüm hataları tek bir yerde izleyen arıza izine bakın:

JUnit ErrorCollector'ın Faydaları

İşlevsel veya GUI doğrulaması için JUnit onayını kullanabilirsiniz, örn.

  1. assertEquals (Dize mesajı, Beklenen nesne, Gerçek nesne) iki nesnenin eşit olduğunu karşılaştırır.
  2. Benzer şekilde assertTrue (Boole koşulu) bir koşulun doğru olduğunu iddia eder.

İddiayı kullanarak doğrulama testi kolaylaşır. Ancak önemli bir sorun, tek bir iddia başarısız olsa bile test yürütmesinin duracak olmasıdır.

Test sürekliliği ve kurtarma yönetimi, otomasyon başarısını test etmek için çok önemlidir. Hata Toplayıcı, bu tür senaryoları ele almanın en iyi yoludur.

Özet :

  • Önemsiz hata toplayıcı, ilk sorun bulunduktan ve sonunda test başarısız olduktan sonra bile testin devam etmesine izin verir
  • Hata toplayıcı, tüm hata nesnelerini toplar ve yalnızca, sonuçta test yürütmesi üzerinden rapor eder.
  • Bir Hata Toplayıcıya tüm hataları eklemenin yararı, tüm hataları tek seferde doğrulayabilmenizdir.
  • Hata toplayıcı, ErrorCollector.java tarafından sağlanan addError (atılabilir hata) yöntemini kullanarak hataları ekler.