JUnit Örnekle Ek Açıklamalar Eğitimi: @Test ve @After Nedir?
Nedir? JUnit Ek açıklamalar?
JUnit Açıklamalar eklenebilen sözdizimsel meta-verilerin özel bir biçimidir. Java Daha iyi kod okunabilirliği ve yapısı için kaynak kodu. Değişkenler, parametreler, paketler, yöntemler ve sınıflar açıklanabilir. Açıklamalar Junit4'te tanıtıldı, bu da Java kodu daha okunabilir ve basit hale getirir. Junit3 ile Junit4 arasındaki en büyük fark, Junit4'ün açıklama tabanlı olmasıdır.
Junit5'teki açıklamaların bilgisiyle, kişi kolayca öğrenebilir ve uygulayabilir JUnit Ölçek. Aşağıda önemli ve sık kullanılanlar yer almaktadır JUnit ek açıklamalar listesi:
S.No. | Açıklamalar | Açıklama |
---|---|---|
1. | @Ölçek | Bu ek açıklama, eklendiği genel geçersiz yöntemin bir test Senaryosu olarak yürütülebileceğini gösteren org.junit.TestCase'in yerine geçmiştir. |
2. | @Önce | Bu ek açıklama, her test senaryosundan önce önkoşullar gibi bazı ifadeleri yürütmek istiyorsanız kullanılır. |
3. | @Dersten önce | Bu açıklama, bazı ifadeleri tüm test senaryolarından önce yürütmek istiyorsanız kullanılır; örneğin test bağlantısı, tüm test senaryolarından önce yürütülmelidir. |
4. | @Sonrasında | Her bir ifadeden sonra bazı ifadeleri yürütmek istiyorsanız bu açıklama kullanılabilir. Test Durumu örneğin değişkenleri sıfırlamak, geçici dosyaları, değişkenleri silmek vb. için. |
5. | @Dersten sonra | Bu ek açıklama, örneğin tüm test senaryolarının yürütülmesinden sonra kaynakların serbest bırakılması gibi tüm test senaryolarından sonra bazı ifadeleri yürütmek istiyorsanız kullanılabilir. |
6. | @Yoksayıldı | Bu ek açıklama, örneğin test yürütme sırasında bazı test senaryolarını devre dışı bırakmak için test yürütme sırasında bazı ifadeleri göz ardı etmek istiyorsanız kullanılabilir. |
7. | @Test(zaman aşımı=500) | Bu ek açıklama, örneğin bir SLA (Hizmet seviyesi sözleşmesi) kapsamında çalışıyorsanız ve testlerin belirli bir süre içinde tamamlanması gerekiyorsa, test yürütme sırasında bir 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. |
JUnit Ek Açıklamalar Örneği
Önemli konuları kapsayan bir sınıf oluşturalım JUnit basit print ifadeleriyle ek açıklamalar ekleyin ve bunu bir test çalıştırıcısı sınıfıyla yürütün:
) 1 Adım Yukarıda listelenen açıklamalara eklenen çeşitli yöntemlere sahip aşağıdaki Java sınıfını göz önünde bulundurun:
JunitAçıklamalarıÖrnek.java
package guru99.junit; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.util.ArrayList; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; public class JunitAnnotationsExample { private ArrayList<String> list; @BeforeClass public static void m1() { System.out.println("Using @BeforeClass , executed before all test cases "); } @Before public void m2() { list = new ArrayList<String>(); System.out.println("Using @Before annotations ,executed before each test cases "); } @AfterClass public static void m3() { System.out.println("Using @AfterClass ,executed after all test cases"); } @After public void m4() { list.clear(); System.out.println("Using @After ,executed after each test cases"); } @Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); } @Ignore public void m6() { System.out.println("Using @Ignore , this execution is ignored"); } @Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); } @Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); } }
) 2 Adım yukarıdaki testi yürütmek için bir test çalıştırıcısı sınıfı oluşturalım:
TestRunner.java
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(JunitAnnotationsExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Beklenen Sonuç
- Tüm test senaryoları tek tek yürütülecek ve tüm yazdırma ifadesi bir konsolda görülebilecek.
- Yukarıdaki tabloda tartışıldığı gibi @Before ek açıklaması JUnit, @BeforeClass [ method m1() ve m2() ] sırasıyla her test senaryosundan önce ve tüm test senaryolarından önce yürütülecektir.
- Aynı şekilde @After in JUnit, @afterClass (yöntem m3() ve m4()) sırasıyla her test senaryosundan sonra ve tüm test senaryolarından sonra yürütülecektir. @ignore (yöntem m6()), testi yok sayma olarak değerlendirilecektir.
Yukarıdaki Java sınıfında kullanılan test senaryolarını detaylı olarak inceleyelim:
- Aşağıda verilen m5() yöntemini düşünün:
@Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); }
Yukarıdaki yöntemde “list” değişkenine bir dize eklerken
- liste boş() false değerini döndürecektir.
- iddiaFalse(list.isEmpty()) doğruya dönmelidir.
- Sonuç olarak, test senaryosu geçmek.
Listeye yalnızca bir dize eklediğiniz için boyut bir olur.
- liste.size() int değerini “1” olarak döndürmelidir.
- So iddiaEquals(1, liste.size()) doğruya dönmelidir.
- Sonuç olarak, test senaryosu geçmek.
- Aşağıda verilen m7() yöntemini düşünün:
@Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); }
Yukarıda tartışıldığı gibi @Test(zaman aşımı = 10)ek açıklama, test senaryosunda zaman aşımını zorlamak için kullanılır.
- Aşağıda verilen m8() yöntemini düşünün:
@Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); }
Yukarıda tartışıldığı gibi @Test(beklenen) yürütme sırasında belirtilen istisnayı kontrol edecek, böylece m8() yöntemi "Böyle Bir Yöntem İstisnası Yok" oluşturacaktır. Sonuç olarak test bir istisna dışında yürütülecektir.
Tüm test senaryoları geçildiğinden bu, testin başarılı bir şekilde yürütülmesiyle sonuçlanır.
Gerçek sonuç
Yukarıdaki örnekte üç test senaryosu olduğundan, tüm test senaryoları tek tek yürütülecektir. Aşağıdaki çıktıya bakın:
Konsolda görülebilecek aşağıdaki yazdırma ifadelerine bakın:
@BeforeClass kullanımı, tüm test senaryolarından önce yürütülür
Her test senaryosundan önce yürütülen @Before ek açıklamalarını kullanma
Her test senaryosundan sonra yürütülen @After kullanımı
Her test senaryosundan önce yürütülen @Before ek açıklamalarını kullanma
@Test(timeout) kullanılarak, zaman aşımını zorlamak için kullanılabilir. JUnit4 test durumu
Her test senaryosundan sonra yürütülen @After kullanımı
Her test senaryosundan önce yürütülen @Before ek açıklamalarını kullanma
@Test(expected) işlevini kullanarak, yürütme sırasında belirtilen istisnayı kontrol edecektir.
Her test senaryosundan sonra yürütülen @After kullanımı
Tüm test senaryolarından sonra yürütülen @AfterClass kullanımı
JUnit Sınıf İddiası
Bu sınıf, bir test senaryosu yazarken yararlı olacak bir dizi iddia yöntemi sağlar. Tüm Assert ifadeleri geçilirse test sonuçları başarılı olur. Herhangi bir iddia ifadesi başarısız olursa, test sonuçları başarısız olur.
Daha önce gördüğünüz gibi, aşağıdaki tabloda önemli Assert yöntemleri ve açıklamaları açıklanmaktadır:
S.No. | Yöntem | Açıklama |
---|---|---|
1. | void iddiaEquals(beklenen boole, gerçek boolean) | Object sınıfının equals yöntemine benzer şekilde iki değerin eşit olup olmadığını kontrol eder. |
2. | voidassertFalse(boole koşulu) | İşlevsellik, bir koşulun yanlış olup olmadığını kontrol etmektir. |
3. | voidassertNotNull(Nesne nesnesi) | “assertNotNull” işlevi bir nesnenin null olup olmadığını kontrol etmektir. |
4. | voidassertNull(Nesne nesnesi) | “assertNull” işlevi bir nesnenin boş olup olmadığını kontrol etmektir. |
5. | voidassertTrue(boolean koşulu) | “assertTrue” işlevi bir koşulun doğru olup olmadığını kontrol etmektir. |
6. | geçersiz başarısızlık () | Herhangi bir iddia hatası atmak istiyorsanız, her zaman başarısız bir kararla sonuçlanan fail() işlevine sahipsiniz. |
7. | voidasserSame([Dize mesajı] | “assertSame” işlevi, iki nesnenin aynı nesneye başvurup başvurmadığını kontrol etmektir. |
8. | voidassertNotSame([Dize mesajı] | “assertNotSame” işlevi, iki nesnenin aynı nesneye gönderme yapıp yapmadığını kontrol etmektir. |
JUnit Test Senaryoları Sınıfı
Birden fazla testi çalıştırmak için TestCase sınıfı mevcuttur. org.junit.TestDavası paketler. @Test ek açıklaması şunları söylüyor JUnit eklendiği bu genel geçersiz yöntemin (burada Test Senaryosu) bir test senaryosu olarak çalıştırılabileceğini unutmayın.
Aşağıdaki tabloda mevcut bazı önemli yöntemler gösterilmektedir. org.junit.TestDavası sınıf:
S.No. | Yöntem | Açıklama |
---|---|---|
1. | int countTestCases() | Bu yöntem, kaç tane test senaryosunun yürütüldüğünü saymak için kullanılır. run(TestResult tr) yöntemi. |
2. | TestResult createResult() | Bu yöntem bir oluşturmak için kullanılır. Test sonucu nesne. |
3. | Dize getName() | Bu yöntem bir dizeden başka bir şey olmayan bir dize döndürür. Test durumu. |
4. | TestSonucu çalıştırması() | Bu yöntem, bir sonuç döndüren bir testi yürütmek için kullanılır. Test sonucu nesne |
5. | geçersiz çalıştırma (TestResult sonucu) | Bu yöntem, bir testi yürütmek için kullanılır. Test sonucu hiçbir şey döndürmeyen nesne. |
6. | void setName(Dize adı) | Bu yöntem bir adı ayarlamak için kullanılır. Test durumu. |
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 gözyaşıDown() | Bu yöntem kaynak sürüm kodunu yazmak için kullanılır. Örneğin, işlem işlemini gerçekleştirdikten sonra veritabanı bağlantısını bırakın. |
JUnit TestSonucu Sınıfı
Bir testi çalıştırdığınızda, bir sonuç döndürür (formunda) Test sonucu nesne). 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, Atılabilir t) | Teste bir hata eklenmesi gerekiyorsa bu yöntem kullanılır. |
2. | void addFailure(Test testi, AssertionFailedError t) | Bu yöntem, arıza listesine bir arıza eklemeniz gerekiyorsa kullanılır. |
3. | void endTest(Test testi) | Bu yöntem bir testin yapıldığını (tamamlandığını) bildirmek için kullanılır. |
4. | int errorCount() | Bu yöntem, test yürütme sırasında tespit edilen hatayı almak için kullanılır. |
5. | Numaralandırma hatalar() | Bu yöntem yalnızca hataların bir koleksiyonunu (burada numaralandırma) döndürür. |
6. | int başarısızlıkSayısı() | 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. | geçersiz çalıştırma (TestCase testi) | Bu yöntem bir test senaryosunu yürütmek için kullanılır. |
8. | int runCount() | Bu yöntem yalnızca yürütülen testi sayar. |
9. | void startTest(Test testi) | Bu yöntem bir testin başlatıldığını bildirmek için kullanılır. |
10 | geçersiz durdurma() | Bu yöntem durdurulacak test çalıştırması için kullanılır. |
JUnit Test Paketi Sınıfı
Birden fazla testi belirli bir sırayla yürütmek istiyorsanız, tüm testleri tek bir yerde birleştirerek bunu yapabilirsiniz. Burası test süitleri olarak adlandırılıyor.
Kullanılan önemli yöntemler için aşağıdaki tabloya bakın. org.junit.TestSuite sınıf:
S.No. | Yöntem | Açıklama |
---|---|---|
1. | void addTest(Test testi) | Pakete bir test eklemek istiyorsanız bu yöntem kullanılır. |
2. | void addTestSuite(Sınıf testSınıfı) | Pakete test eklerken sınıfı belirtmek istiyorsanız bu yöntem kullanılır. |
3. | int countTestCases() | Test senaryolarının sayısını saymak istiyorsanız bu yöntem kullanılır. |
4. | Dize getName() | Bu yöntem test paketinin adını almak için kullanılır. |
5. | geçersiz çalıştırma (TestResult sonucu) | Bu yöntem bir testi yürütmek ve test sonucunu toplamak için kullanılır. Test sonucu nesne. |
6. | void setName(Dize adı) | Bu yöntem adını ayarlamak için kullanılır. Test odası. |
7. | Test testAt(int indeksi) | Testi verilen dizine döndürmek istiyorsanız bu yöntem kullanılır. |
8. | int testCount() | Suite'te bir dizi testi döndürmek istiyorsanız bu yöntem kullanılır. |
9. | Statik Test uyarısı (Dize mesajı) | Bu yöntem başarısız olacak bir test döndürür ve bir uyarı mesajı günlüğe kaydeder. |
ÖZET
- JUnit tüm önemli sınıfları sağlayan taşınabilir bir API sağlar ve Selenium Birim testi yazarken yararlı olan ek açıklamalar.
- Test senaryosu yazarken çok faydalı olan sınıflar
- org.junit.İddia
- org.junit.TestDavası
- org.junit.TestSonucu
- org.junit.TestSuite
- Önemli ve sık kullanılan JUnit ek açıklamalar listesi@Önce@ÖnceSınıf@Sonra
@Dersten sonra
@Ölçek
@Görmezden gelmek