JUnit ErrorCollector @Rule Örnekle
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.
Fakat JUnit biraz farklı bir yaklaşımı var. İle JUnit hata toplayıcıyı kullanarak, bir sorun bulunduğunda veya test başarısız olduğunda bile test yürütmeye devam edebilirsiniz. Hata toplayıcı, tüm hata nesnelerini toplar ve bunu yalnızca test yürütmesi bittikten sonra bir kez bildirir.
Hata Toplayıcı'yı neden kullanmalısınız?
Bir test betiği yazarken, herhangi bir kod satırı ağ arızası, onaylama hatası veya başka bir nedenden dolayı başarısız olsa bile tüm testleri yürütmek istersiniz. Bu durumda, tarafından sağlanan özel bir özelliği kullanarak test komut dosyasını çalıştırmaya devam edebilirsiniz. JUnit "hata toplayıcı" olarak bilinir.
Bunun için, JUnit kullanım @Kural ek açıklaması hata toplayıcı nesnesi oluşturmak için kullanılır. Hata toplayıcı nesnesi oluşturulduktan sonra, yöntemi kullanarak tüm hataları nesneye kolayca ekleyebilirsiniz. addError (Atılabilir hata). Bildiğin gibi Atılabilir süper sınıftır Istisna ve Hata sınıfta Java. Hataları bu şekilde eklediğinizde bu hatalar kayıt altına alınacaktır. JUnit test sonucu .
Tüm hataları bir Hata Toplayıcıya eklemenin yararı, tüm hataları bir kerede doğrulayabilmenizdir. Ayrıca, komut dosyası ortada başarısız olursa, onu çalıştırmaya devam edebilir.
not: Basit iddia veya try/catch bloğunun kullanılması durumunda hata toplayıcı yönteminin kullanılması mümkün olmayacaktır.
Basit kod
Error Collector hakkında daha fazla bilgi edinmek için, bir Error Collector nesnesinin nasıl oluşturulacağını ve sorunu izlemek için o nesnedeki tüm hataların nasıl ekleneceğini gösteren aşağıdaki kod örneğine bakın:
package guru99.junit; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ErrorCollector; public class ErrorCollectorExample { @Rule public ErrorCollector collector = new ErrorCollector(); @Test public void example() { collector.addError(new Throwable("There is an error in first line")); collector.addError(new Throwable("There is an error in second line")); collector.checkThat(getResults(), not(containsString("here is an error"))); // all lines of code will execute and at the end a combined failure will be logged in. } }
jUnit'te @Rule nedir?
JUnit testlerin özel bir şekilde işlenmesini sağlar, Test Durumu veya test paketini kullanarak @kural ek açıklaması. @rule kullanarak testin davranışını kolayca ekleyebilir veya yeniden tanımlayabilirsiniz.
Tarafından sağlanan çeşitli yerleşik kurallar vardır. JUnit Bir testçinin kullanabileceği API, hatta kendi kuralımızı yazabilirsiniz.
Error Collector ile birlikte @rule ek açıklamasının nasıl kullanılacağını gösteren aşağıdaki kod satırına bakın:
@Rule public ErrorCollector collector= new ErrorCollector();
ErrorCollector kullanma örneği
Hata toplayıcıyı anlamak için tüm hataları toplayacak bir sınıf ve kural oluşturalım. Tüm hataları buraya addError(throwable) kullanarak ekleyeceksiniz.
Basitçe "Hata Toplayıcı nesnesi" oluşturmaktan başka bir şey olmayan bir kural oluşturan aşağıdaki koda bakın. Bu, sonunda sorunu bildirmek amacıyla tüm hataları eklemek için de kullanılır:
ErrorCollectorExample.java
package guru99.junit; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ErrorCollector; public class ErrorCollectorExample { @Rule public ErrorCollector collector = new ErrorCollector(); @Test public void example() { collector.addError(new Throwable("There is an error in first line")); collector.addError(new Throwable("There is an error in second line")); System.out.println("Hello"); try { Assert.assertTrue("A " == "B"); } catch (Throwable t) { collector.addError(t); } System.out.println("World!!!!"); } }
TestRunner.java
Yukarıdaki test sınıfını bir test çalıştırıcısına ekleyelim ve tüm hataları toplamak için çalıştıralım. Aşağıdaki koda bakın:
package 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) { Result result = JUnitCore.runClasses(ErrorCollectorExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Çıktı:
Tüm hataları tek bir yerde izleyen arıza takibine bakın:
Faydaları JUnit Hata Toplayıcı
Sen kullanabilirsiniz JUnit işlevsellik veya GUI doğrulaması için iddia, örneğin
- iddiaEquals(String message, Object bekleniyor, Object real) iki nesnenin eşit olduğunu karşılaştırır.
- Benzer şekilde,asserTrue(Boolean koşulu), bir koşulun doğru olduğunu ileri sürer.
İddia kullanılarak doğrulama testi kolaylaşır. Ancak önemli bir sorun, tek bir iddia başarısız olsa bile test yürütmenin durdurulmasıdır.
Test sürekliliği ve kurtarma yönetimi, test otomasyonunun başarısı için çok önemlidir. Error Collector bu tür senaryolarla baş etmenin en iyi yoludur.
ÖZET
- Junit hata toplayıcı, ilk sorun bulunduktan ve test sonunda başarısız olduktan sonra bile testin devam etmesine olanak tanır
- Hata toplayıcı tüm hata nesnelerini toplar ve bunu yalnızca testin yürütülmesinden sonra rapor eder.
- Tüm hataları bir Hata Toplayıcıya eklemenin yararı, tüm hataları bir kerede doğrulayabilmenizdir.
- Hata toplayıcı, ErrorCollector.java tarafından sağlanan addError(throwable err) yöntemini kullanarak hataları ekler.