JUnit Test Durumları @Before @BeforeClass Ek Açıklaması
JUnit en popüler birimdir Test yapmak çerçeve Java. Açıkça tavsiye edilir Birim Testi. JUnit Web uygulamasını test etmek için sunucuya ihtiyaç duymaz, bu da test sürecini hızlandırır.
JUnit çerçeve aynı zamanda test senaryolarının ve test verilerinin hızlı ve kolay bir şekilde oluşturulmasına olanak tanır. organizasyonHaziran paket birçok arayüz ve sınıftan oluşur JUnit Test, Assert, After, Before vb. gibi testler.
Test fikstürü nedir
Test fikstürünün ne olduğunu anlamadan önce aşağıdaki kodu inceleyelim.
Bu kod, basit bir dosya üzerinde iki test senaryosunu yürütmek için tasarlanmıştır.
public class OutputFileTest { private File output; output = new File(...); output.delete(); public void testFile1(){ //Code to verify Test Case 1 } output.delete(); output = new File(...); public void testFile2(){ //Code to verify Test Case 2 } output.delete(); }
Burada birkaç sorun var
- Kod okunamıyor
- Kodun bakımı kolay değildir.
- Test takımı karmaşık olduğunda kod mantıksal sorunlar içerebilir.
Aynı kodu kullanarak karşılaştırın JUnit
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Kod çok daha okunabilir ve bakımı kolay. Yukarıdaki kod yapısı bir Test fikstürü.
Bir test fikstürü, bir JUnit Test Durumu koşar. Tipik olarak test fikstürleri şunları içerir:
- Herhangi bir test senaryosu için kullanılabilen nesneler veya kaynaklar.
- Bu nesneleri/kaynakları kullanılabilir hale getirmek için gereken faaliyetler.
- Bu faaliyetler
- paylaştırma (kurulum)
- tahsisin kaldırılması (söküm).
Kurulum ve Sökme
- Genellikle her test senaryosundan önce yapılması gereken bazı tekrarlanan görevler vardır. Örnek: bir veritabanı bağlantısı oluşturun.
- Aynı şekilde her test senaryosunun sonunda tekrarlanan bazı görevler olabilir. Örnek: test yürütmesi bittiğinde temizlemek için.
- JUnit kurulum ve sökme işlemlerine yardımcı olan açıklamalar sağlar. Kaynakların serbest bırakılmasını ve test sisteminin bir sonraki test senaryosu için hazır durumda olmasını sağlar.
Bunlar JUnit ek açıklamalar aşağıda tartışılmaktadır.
Kurmak
@Önce ek açıklama JUnit içeren bir yöntemde kullanılır Java Her test senaryosundan önce çalıştırılacak kod. yani her test yürütülmesinden önce çalışır.
Yıkım (karar ne olursa olsun)
@Sonrasında ek açıklama, her test senaryosundan sonra çalıştırılacak Java kodunu içeren bir yöntemde kullanılır. Bu yöntemler, test senaryosunda veya onaylama hataları durumunda herhangi bir istisna atılsa bile çalışacaktır.
Not:
- Yukarıda listelenen herhangi bir sayıda ek açıklamaya sahip olunmasına izin verilir.
- Açıklamalı tüm yöntemler @Önce in JUnit her test senaryosundan önce çalıştırılacaktır ancak herhangi bir sırayla çalıştırılabilirler.
- @Before ve @After yöntemlerini bir süper sınıftan miras alabilirsiniz, Yürütme aşağıdaki gibidir: Bu, standart bir yürütme işlemidir. JUnit.
- Uygula JUnit @Before süper sınıftaki yöntemler
- Bu sınıfta @Before yöntemlerini yürütün
- Bu sınıfta bir @Test yöntemini yürütün
- Bu sınıfta @After yöntemlerini yürütün
- Üst sınıfta @After yöntemlerini yürütün
Örnek: Test fikstürü olarak dosya içeren bir sınıf oluşturma
public class OutputFileTest { private File output; @Before public void createOutputFile() { output = new File(...); } @After public void deleteOutputFile() { output.delete(); } @Test public void testFile1() { // code for test case objective } @Test public void testFile2() { // code for test case objective } }
Yukarıdaki örnekte uygulama zinciri aşağıdaki gibi olacaktır:
- createOutputFile()
- testDosyası1()
- deleteOutputFile()
- createOutputFile()
- testDosyası2()
- deleteOutputFile()
Varsayım:
testFile1(), testFile2()'den önce çalışır; bu garanti edilmez.
Tek seferlik kurulum
- Testlerden herhangi biri yürütülmeden önce ve herhangi bir test yürütülmeden önce, tüm test sınıfı için bir yöntemi yalnızca bir kez çalıştırmak mümkündür. @Önce yöntem(ler).
- “Yalnızca kurulum” sunucuları başlatmak, iletişimleri açmak vb. için kullanışlıdır. Her test için kaynakları kapatıp yeniden açmak zaman alır.
- Bu, ek açıklama kullanılarak yapılabilir @Dersten önce in JUnit.
@BeforeClass public static void Method_Name() { // class setup code here }
Sadece bir kez yıkmak
- Yalnızca bir kez kuruluma benzer şekilde, yalnızca bir kez temizleme yöntemi de mevcuttur. Tüm test senaryosu yöntemlerinden sonra çalışır ve @Sonrasında açıklamalar gerçekleştirildi.
- Sunucuları durdurmak, iletişim bağlantılarını kapatmak vb. için kullanışlıdır.
- Bu, kullanılarak yapılabilir @Dersten sonra not
@AfterClass public static void Method_Name() { // class cleanup code here }
JUnit Test Paketleri
Birden fazla testi belirli bir sırayla yürütmek istiyorsak, tüm testleri tek bir yerde birleştirerek bunu yapabiliriz. Bu yere test takımları denir. Test takımlarının nasıl yürütüleceği ve nasıl kullanıldığı hakkında daha fazla ayrıntı JUnit bu kapsamda ele alınacak öğretici.
Junit Test Çalıştırıcısı
JUnit test senaryolarınızın yürütülmesi için bir araç sağlar.
- JUnitçekirdek Bu testleri yürütmek için sınıf kullanılır.
- Bir yöntem adı verildi runClasses tarafından sağlanan org.junit.runner.JUnitÇekirdek, bir veya daha fazla test sınıfını çalıştırmak için kullanılır.
- Bu metodun dönüş tipi Sonuç nesne (org.junit.runner.Sonuç), testler hakkında bilgiye erişmek için kullanılır. Daha fazla açıklık için aşağıdaki kod örneğine bakın.
public class Test { public static void main(String[] args) { Result result = JUnitCore.runClasses(CreateAndSetName.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println(result.wasSuccessful()); } }
Yukarıdaki kodda “result” nesnesi, yürüttüğümüz test senaryolarının başarısızlıklarını ve başarılı sonuçlarını elde etmek için işlenir.
Ad JUnit program
SDLC, Java programlama ve temelleri hakkında yeterli bilgi yazılım testi süreç anlamaya yardımcı olur JUnit programı.
Canlı bir örnek kullanarak Birim Testini anlayalım. Açıklamalı bir test yöntemiyle bir test sınıfı oluşturmamız gerekiyor. @Ölçek aşağıda verildiği gibi:
MyFirstClassTest.java
package guru99.JUnit; import static org.JUnit.Assert.*; import org.JUnit.Test; public class MyFirstClassTest { @Test public void myFirstMethod(){ String str= "JUnit is working fine"; assertEquals("JUnit is working fine",str); } }
TestRunner.java
Test yöntemimizi (yukarıda) yürütmek için bir test çalıştırıcısı oluşturmamız gerekiyor. Test çalıştırıcısında test sınıfını parametre olarak eklemeliyiz. JUnitCore'un runclasses() yöntemi. Testin başarılı veya başarısız olmasına bağlı olarak test sonucunu döndürür.
Bu konuda daha fazla ayrıntı için 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(MyFirstClassTest.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Çıktı
bir Zamanlar TestRunner.java Başarısız veya başarılı olarak çıktı aldığımız test yöntemlerimizi yürütür. Lütfen aşağıdaki çıktı açıklamasını bulun:
- Bu örnekte, yürütüldükten sonra MyFirstClassTest.java , test geçildi ve sonuç yeşil renkte.
- Arızalı olsaydı sonucu Kırmızı olarak göstermesi gerekirdi ve arıza takibinde arıza gözlemlenebilirdi. Aşağıya bakınız JUnit kullanıcı adı:
ÖZET
- JUnit bir test içeren bir yöntemi tanımlamak için çeşitli açıklamaları destekleyen bir çerçevedir.
- JUnit adında bir ek açıklama sağlar @Ölçek, bu şunu söyler JUnit kullanıldığı genel geçersiz yöntemin bir test senaryosu olarak çalıştırılabileceğini.
- Test fikstürü, test senaryosunun çalıştırıldığı bir bağlamdır
- Birden fazla testi belirli bir sırayla yürütmek için tüm testler tek bir yerde birleştirilerek yapılabilir. Burası test süitleri olarak adlandırılıyor.
- JUnit Test Çalıştırıcısı olarak adlandırılan test senaryolarımızı çalıştırabileceğimiz testlerin yürütülmesi için bir araç sağlar.