JUnit Ek Açıklamaları nedir?
JUNIT ANNOTATIONS , daha iyi kod okunabilirliği ve yapısı için Java kaynak koduna eklenebilen özel bir sözdizimsel meta veri biçimidir. Değişkenler, parametreler, paketler, yöntemler ve sınıflar açıklanabilir. Ek açıklamalar, Java kodunu daha okunaklı ve basit hale getiren Junit4'te tanıtıldı. Junit3 ile Junit4 arasındaki, Junit4'ün ek açıklamaya dayalı olduğu büyük fark budur.
Junit5'teki ek açıklamalar bilgisiyle, bir JUnit testi kolayca öğrenilebilir ve uygulanabilir. Aşağıda, önemli ve sık kullanılan ek açıklamaların listesi verilmiştir:
S.No. | Ek açıklamalar | Açıklama |
---|---|---|
1. | @Ölçek | Bu açıklama, org.junit.TestCase'in yerine geçer ve bu, eklendiği public void yönteminin bir test senaryosu olarak yürütülebileceğini belirtir. |
2. | @Önce | Bu açıklama, her test senaryosundan önce ön koşullar gibi bazı ifadeleri yürütmek istiyorsanız kullanılır. |
3. | @Dersten önce | Bu açıklama, tüm test senaryoları için tüm test durumlarından önce bazı ifadeleri yürütmek istiyorsanız kullanılır, örneğin tüm test durumlarından önce test bağlantısı yürütülmelidir. |
4. | @Sonra | Bu açıklama, her Test Vakasından sonra, örneğin değişkenleri sıfırlamak, geçici dosyaları, değişkenleri silmek vb. İçin bazı ifadeler yürütmek istiyorsanız kullanılabilir. |
5. | @Dersten sonra | Bu açıklama, tüm test senaryoları için tüm test durumlarından sonra bazı ifadeleri yürütmek istiyorsanız kullanılabilir, örneğin, tüm test olaylarını yürüttükten sonra kaynakları serbest bırakmak. |
6. | @Hayalhanemersin | Bu açıklama, örneğin test yürütme sırasında bazı test durumlarını devre dışı bırakmak için test yürütme sırasında bazı ifadeleri yok saymak isterseniz kullanılabilir. |
7. | @Test (zaman aşımı = 500) | Bu açıklama, örneğin bazı SLA (Hizmet seviyesi anlaşması) kapsamında çalışıyorsanız ve testlerin belirli bir süre içinde tamamlanması gerekiyorsa, test yürütme sırasında biraz zaman aşımı ayarlamak istiyorsanız kullanılabilir. |
8. | @Test (beklenen = IllegalArgumentException.class) | Bu açıklama, test yürütme sırasında bazı istisnaları işlemek istiyorsanız kullanılabilir. Örneğin, belirli bir yöntemin belirtilen istisnayı atıp atmadığını kontrol etmek istiyorsanız. |
Bu eğitimde öğreneceksiniz-
- JUnit Ek Açıklamaları Örneği
- JUnit Assert Sınıfı
- JUnit Test Durumları Sınıfı
- JUnit TestResult Sınıfı
- JUnit Test Suite Sınıfı
JUnit Ek Açıklamaları Örneği
Basit yazdırma ifadeleriyle önemli JUnit ek açıklamalarını kapsayan bir sınıf oluşturalım ve bunu bir test çalıştırıcı sınıfıyla çalıştıralım:
Adım 1) Yukarıda listelenen ek açıklamalara eklenen çeşitli yöntemlere sahip aşağıdaki java sınıfını düşünün:
JunitAnnotationsExample.java
paket guru99.junit;statik org.junit.Assert.assertEquals içe aktar;içe aktar statik org.junit.Assert.assertFalse;import java.util.ArrayList;org.junit.After içe aktar;import org.junit.AfterClass;import org.junit.Before;org.junit.BeforeClass'ı içe aktar;import org.junit.Ignore;import org.junit.Test;public class JunitAnnotationsExample {özel ArrayListlistesi;@Dersten öncepublic static void m1 () {System.out.println ("@BeforeClass kullanılarak, tüm test durumlarından önce yürütülür");}@Öncepublic void m2 () {liste = new ArrayList ();System.out.println ("@Before ek açıklamalarının kullanılması, her test durumundan önce yürütülür");}@Dersten sonragenel statik boşluk m3 () {System.out.println ("@AfterClass kullanılarak, tüm test durumlarından sonra çalıştırılır");}@Sonrapublic void m4 () {list.clear ();System.out.println ("@After kullanarak, her test durumundan sonra çalıştırılır");}@Ölçekpublic void m5 () {list.add ("test");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}@Aldırmamakpublic void m6 () {System.out.println ("@Ignore kullanıldığında, bu yürütme yok sayılır");}@Test (zaman aşımı = 10)public void m7 () {System.out.println ("@Test (zaman aşımı) kullanarak, JUnit4 test durumunda zaman aşımını zorlamak için kullanılabilir");}@Test (beklenen = NoSuchMethodException.class)public void m8 () {System.out.println ("@Test kullanarak (beklenen), yürütme sırasında belirtilen istisnayı kontrol edecektir");}}
Adım 2) yukarıdaki testi yürütmek için bir test çalıştırıcı sınıfı oluşturalım:
TestRunner.java
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 (JunitAnnotationsExample.class);for (Hata hatası: result.getFailures ()) {System.out.println (fail.toString ());}System.out.println ("Result ==" + result.wasSuccessful ());}}
Beklenen Sonuç
- Tüm test senaryoları birer birer yürütülecek ve tüm baskı ifadeleri bir konsolda görülebilecek.
- Yukarıdaki tabloda tartışıldığı gibi @Before, @BeforeClass [yöntem m1 () ve m2 ()] sırasıyla her bir testten önce ve tüm test durumlarından önce yürütülecektir.
- Aynı şekilde @ after, @ afterClass (yöntem m3 () ve m4 ()) sırasıyla her bir testin ardından ve tüm test durumlarından sonra yürütülecektir. @ignore (yöntem m6 ()) testi yok sayıyor olarak değerlendirilecektir.
Yukarıdaki java sınıfında kullanılan test senaryolarını detaylı bir şekilde inceleyelim:
- Aşağıda verildiği gibi m5 () yöntemini düşünün:
@Ölçekpublic void m5 () {list.add ("test");assertFalse (list.isEmpty ());assertEquals (1, list.size ());}
Yukarıdaki yöntemde "list" değişkenine bir dize eklerken
- list.isEmpty () yanlış döndürür.
- assertFalse (list.isEmpty ()) doğru döndürmelidir.
- Sonuç olarak, test durumu geçecek .
Listeye yalnızca bir dize eklediğiniz için boyut bir olur.
- list.size () int değerini "1" olarak döndürmelidir.
- Bu nedenle, assertEquals (1, list.size ()) true döndürmelidir.
- Sonuç olarak, test durumu geçecek .
- Aşağıda verildiği gibi m7 () yöntemini düşünün:
@Test (zaman aşımı = 10)public void m7 () {System.out.println ("@Test (zaman aşımı) kullanarak, JUnit4 test durumunda zaman aşımını zorlamak için kullanılabilir");}
Yukarıda tartışıldığı gibi @Test (timeout = 10) ek açıklaması, test durumunda zaman aşımını zorunlu kılmak için kullanılır.
- Aşağıda verildiği gibi m8 () yöntemini düşünün:
@Test (beklenen = NoSuchMethodException.class)public void m8 () {System.out.println ("@Test kullanarak (beklenen), yürütme sırasında belirtilen istisnayı kontrol edecektir");}
Yukarıda tartışıldığı gibi @Test (beklenen) , yürütülmesi sırasında belirtilen istisnayı kontrol edecektir, bu nedenle m8 () yöntemi "Böyle Bir Yöntem İstisnası Yok" oluşturacaktır. Sonuç olarak, test bir istisna ile yürütülecektir.
Tüm test senaryoları geçildiğinden, bu başarılı bir test yürütmesi ile sonuçlanır.
Gerçek sonuç
Yukarıdaki örnekte üç test senaryosu olduğundan, tüm test senaryoları birer birer yürütülecektir. Aşağıdaki çıktıya bakın :
Konsolda görülebilen aşağıdaki yazdırma ifadelerine bakın:
@BeforeClass kullanımı, tüm test durumlarından önce yürütülür
@Before ek açıklamalarının kullanılması, her test senaryosundan önce yürütülür
@After kullanarak, her test senaryosundan sonra yürütülür
@Before ek açıklamalarının kullanılması, her test senaryosundan önce yürütülür
@Test (zaman aşımı) kullanarak, JUnit4 test durumunda zaman aşımını zorlamak için kullanılabilir
@After kullanarak, her test senaryosundan sonra yürütülür
@Before ek açıklamalarının kullanılması, her test senaryosundan önce yürütülür
@Test (beklenen) kullanarak, yürütme sırasında belirtilen istisnayı kontrol edecektir.
@After kullanarak, her test senaryosundan sonra yürütülür
@AfterClass kullanımı, tüm test durumlarından sonra yürütülür
JUnit Assert Sınıfı
Bu sınıf, bir test senaryosu yazarken yararlı olan bir dizi onaylama yöntemi sağlar. Tüm assert ifadeleri geçilirse, test sonuçları başarılıdır. Herhangi bir assert ifadesi başarısız olursa, test sonuçları başarısız olur.
Daha önce gördüğünüz gibi, aşağıdaki tablo önemli Assert yöntemlerini ve açıklamasını açıklamaktadır:
S.No. | Yöntem | Açıklama |
---|---|---|
1. | void assertEquals (boolean bekleniyor, boole gerçek) | İki değerin, Object sınıfının eşittir yöntemine benzer olup olmadığını kontrol eder. |
2. | void assertFalse (boole koşulu) | işlevsellik, bir koşulun yanlış olup olmadığını kontrol etmektir. |
3. | void assertNotNull (Nesne nesnesi) | "assertNotNull" işlevi, bir nesnenin boş olmadığını kontrol etmektir. |
4. | void assertNull (Nesne nesnesi) | "assertNull" işlevi, bir nesnenin boş olup olmadığını kontrol etmektir. |
5. | void assertTrue (boole koşulu) | "assertTrue" işlevi, bir koşulun doğru olup olmadığını kontrol etmektir. |
6. | geçersiz başarısız () | Herhangi bir onaylama hatası atmak istiyorsanız, her zaman başarısızlıkla sonuçlanan fail () 'e sahip olursunuz. |
7. | void assertSame ([Dize mesajı] | "assertSame" işlevi, iki nesnenin aynı nesneye başvurduğunu kontrol etmektir. |
8. | void assertNotSame ([Dize mesajı] | "assertNotSame" işlevi, iki nesnenin aynı nesneye başvurmadığını kontrol etmektir. |
JUnit Test Durumları Sınıfı
Birden fazla test çalıştırmak için TestCase sınıfı org.junit.TestCase paketlerinde mevcuttur . @ Test Ek açıklaması, JUnit'e eklendiği bu genel void yönteminin (burada Test Vakası) bir test durumu olarak çalıştırılabileceğini söyler.
Aşağıdaki tablo, org.junit.TestCase sınıfında bulunan bazı önemli yöntemleri göstermektedir :
S.No. | Yöntem | Açıklama |
---|---|---|
1. | int countTestCases () | Bu yöntem, çalıştırma (TestResult tr) yöntemi tarafından kaç test olayı yürütüldüğünü saymak için kullanılır . |
2. | TestResult createResult () | Bu yöntem, bir TestResult nesnesi oluşturmak için kullanılır . |
3. | GetName () dizesi | Bu yöntem, bir TestCase'den başka bir şey olmayan bir dize döndürür . |
4. | TestResult çalıştırma () | Bu yöntem, bir TestResult nesnesi döndüren bir testi yürütmek için kullanılır. |
5. | void run (TestResult sonucu) | Bu yöntem, hiçbir şey döndürmeyen TestResult nesnesine sahip bir testi yürütmek için kullanılır . |
6. | void setName (Dize adı) | Bu yöntem, bir TestCase adını belirlemek için kullanılır . |
7. | geçersiz kurulum () | Bu yöntem, kaynak ilişkilendirme kodunu yazmak için kullanılır. örneğin, bir veritabanı bağlantısı oluşturun. |
8. | void tearDown () | Bu yöntem, kaynak yayın kodu yazmak için kullanılır. örn. İşlem işlemini gerçekleştirdikten sonra veritabanı bağlantısını serbest bırakın. |
JUnit TestResult Sınıfı
Bir testi yürüttüğünüzde, bir sonuç döndürür ( TestResult nesnesi biçiminde ). Bu TestResult nesnesi, ortaya çıkan nesneyi analiz etmek için kullanılabilir. Bu test sonucu başarısız veya başarılı olabilir. Org.junit.TestResult sınıfında kullanılan önemli yöntemler için aşağıdaki tabloya bakın:S.No. | Yöntem | Açıklama |
---|---|---|
1. | void addError (Test testi, Throwable t) | Bu yöntem, teste bir hata eklemeniz gerekirse kullanılır. |
2. | void addFailure (Test testi, AssertionFailedError t) | Bu yöntem, arıza listesine bir arıza eklemeniz gerekirse kullanılır. |
3. | void endTest (Test testi) | Bu yöntem, bir testin gerçekleştirildiğini (tamamlandığını) bildirmek için kullanılır. |
4. | int errorCount () | Bu yöntem, testin yürütülmesi sırasında tespit edilen hatayı almak için kullanılır. |
5. | Numaralandırma | Bu yöntem basitçe bir hata koleksiyonu (burada Numaralandırma) döndürür. |
6. | int failCount () | Bu yöntem, testin yürütülmesi sırasında tespit edilen hataların sayısını almak için kullanılır. |
7. | void run (TestCase testi) | Bu yöntem, bir test senaryosu yürütmek için kullanılır. |
8. | int runCount () | Bu yöntem basitçe yürütülen testi sayar. |
9. | void startTest (Test testi) | Bu yöntem, bir testin başladığını bildirmek için kullanılır. |
10. | geçersiz durdurma () | Bu yöntem, durdurulacak çalışmayı test etmek için kullanılır. |
JUnit Test Suite Sınıfı
Belirli bir sırada birden fazla test yapmak istiyorsanız, tüm testleri tek bir yerde birleştirerek yapılabilir. Buraya test süitleri deniyor.
Org.junit.TestSuite sınıfında kullanılan önemli yöntemler için aşağıdaki tabloya bakın :
S.No. | Yöntem | Açıklama |
---|---|---|
1. | void addTest (Test testi) | Bu yöntem, süite bir test eklemek isterseniz kullanılır. |
2. | void addTestSuite (Class extends TestCase> testClass) | Süite bir test eklerken sınıfı belirtmek isterseniz bu yöntem kullanılır. |
3. | int countTestCases () | Bu yöntem, test senaryolarının sayısını saymak istiyorsanız kullanılır. |
4. | GetName () dizesi | Bu yöntem, test paketinin adını almak için kullanılır. |
5. | void run (TestResult sonucu) | Bu yöntem, bir test yürütmek ve TestResult nesnesinde test sonucunu toplamak için kullanılır . |
6. | void setName (Dize adı) | Bu yöntem, TestSuite adını ayarlamak için kullanılır . |
7. | Test testAt (int indeksi) | Bu yöntem, testi verilen indekste döndürmek istiyorsanız kullanılır. |
8. | int testCount () | Bu yöntem, Suite'teki bir dizi testi geri döndürmek istiyorsanız kullanılır. |
9. | statik Test uyarısı (Dize mesajı) | Bu yöntem, başarısız olacak ve bir uyarı mesajı kaydedecek bir test döndürür. |
Özet:
- JUnit, bir birim testi yazarken yararlı olan tüm önemli sınıfları ve ek açıklamaları sağlayan taşınabilir bir API sağlar.
- Bir test senaryosu yazarken çok faydalı olan sınıflar
- org.junit.Assert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- önemli ve sık kullanılan ek açıklamalar listesi
@Önce
@Dersten önce
@Sonra
@Dersten sonra
@Ölçek
@Aldırmamak