list junit annotations
Bu Eğitim JUnit 4 ve JUnit 5'teki Ek Açıklamaların Karşılaştırması ile birlikte JUnit Ek Açıklamaları hakkında her şeyi açıklar:
JUnit test senaryolarını yürütmenin farklı yollarını öğrendik ve önceki eğitimimizde bir test paketinin nasıl oluşturulacağını ve çalıştırılacağını gördük.
Bu eğitimde, JUnit'in adı verilen önemli yönünü öğreneceğiz. Ek açıklamalar. JUnit 4'ten başlayarak, ek açıklamalar mevcuttur ve JUnit'i çok basit, daha faydalı ve kullanımı çok daha kullanıcı dostu hale getirir.
Ek açıklamalar JVM'nin test sınıfında tanımlanan yöntemin türünü tanımasını sağlayan bir Java API'sidir. Sık kullanılan 'yaşam döngüleri geri arama ek açıklamaları' vardır.
=> JUnit'i Sıfırdan Öğrenmek İçin Burayı Ziyaret Edin.
Ne öğreneceksin:
JUnit Ek Açıklamaları - JUnit 4 - JUnit 5
Bir test yürütmesi, aşağıda belirtildiği gibi yaşam döngüsünün farklı aşamalarından geçer:
- Bir sınava başlamadan önce, bir sınıfın başlangıcında gerçekleştirilmesi gereken bazı etkinlikler vardır.
- Bir test senaryosu yürütülmeye başlamadan önce gerçekleştirilecek diğer bazı etkinlikler.
- Testin yürütülmesinden sonra yapılması gereken belirli faaliyetler ve
- Bir sınıftaki tüm testlerin gerçekleştirilmesi sonunda belirli faaliyetler.
Java yaşam döngüsünün her aşamasında bu etkinliklerin gerçekleştirildiğinden emin olmak için, 'olarak adlandırılan belirli kullanıcı tanımlı yöntemlerin veya işlevlerin olması gerekir. yaşam döngüsü geri arama yöntemleri .
Bunların davranışı yaşam döngüsü geri arama yöntemleri yerleşik 'tarafından belirlenir yaşam döngüsü geri arama ek açıklamaları ' JUnit'te kullanılır.
Misal: Bu yaşam döngüsü geri arama yöntemlerini ve ek açıklamalarını bir örnekle ilişkilendirerek daha da basitleştirmeyi deneyelim: bir kahve otomatını test etmek.
- Bir metod machineReady () makine açılmadan önce su, süt ve kahve çekirdeklerinin olup olmadığını kontrol eder.
- Diğer yöntem startMachine () makineyi çalıştıran, makineye yeni bir kağıt bardak yerleştiren gerekli olabilir.
- ' Sıcak su () ’Seçeneği.
- ' Cappuccino () ’Seçeneği.
- ' ExpressoCoffee () ’Seçeneği.
- Diğer yöntem ' fırlatmak () ”Kullanılmış fincanları çöp kutusuna atar.
- Sınıf düzeyinde bir yöntem ' throwTrashandSwitchOff () ”, Tepsiden taşan atık sıvıyı leğene atar ve makineyi kapatır.
Dolayısıyla, yukarıdaki örnekte, testin yaşam döngüsü şu şekilde:
- startMachine () her test senaryosundan önce çalışacaktır - Sıcak su (), Cappuccino () ve ExpressoCoffee () koşar.
- Bu test senaryolarının her biri yöntemi de takip eder fırlatmak ().
- Metodlar machineReady () ve throwTrashandSwitchOff (), bir sınıf için yalnızca bir kez çalışan sınıf düzeyinde yöntemdir. Yöntem machineReady (), sınıf yürütmeyi başlatırken bir kez çalışır. Yöntem throwTrashandSwitchOff () tüm test durumları tamamlandıktan sonra bir kez çalışır.
Şimdi, soru şu ki, bunlar yalnızca Java yöntemleridir, o zaman:
test senaryosu ve test planı arasındaki fark
- JVM'nin çalışmasında nasıl ısrar edeceğiz machineReady () sınıf düzeyinde yalnızca bir kez ve throwTrashandSwitchOff () sınıf uygulamasının sonunda?
- JVM'nin bunu bilmesini nasıl sağlayacağız startMachine () ve fırlatmak () her test senaryosu çalıştırılmadan önce ve her bir test senaryosu yürütmesinin tamamlanmasından sonra çalıştırılması gerekiyor mu?
- JVM'nin yöntemlerin Sıcak su (), Cappuccino () ve ExpressoCoffee () test senaryoları çalıştırılacak mı?
Cevap: Yukarıdaki soruların tek cevabı, yaşam döngüsü geri arama ek açıklamalarının gerekli tüm sihri yaptığıdır.
(Şimdilik, bu sınıfı JUnit 4'te oluşturduğumuzu varsayalım)
Yaşam döngüsü ek açıklamaları - @BeforeClass, @AfterClass, @Before, @After, ve @Ölçek yukarıdaki üç sorunun gerçek cevaplarıdır. Aşağıdaki işaretçileri okuduktan sonra, yaşam döngüsü geri arama ek açıklamaları ve iş akışıyla netleşeceğinizden oldukça eminiz.
- Yönteme açıklama ekleyin machineReady () ile @Dersten önce ve JVM, dersin başlangıcında bir kez çalıştırmasını sağlayacaktır.
- Yönteme açıklama ekleyin çöp atmak () ile @Dersten sonra ve JVM, dersin sonunda onu bir kez çalıştıracaktır.
- Yönteme açıklama ekleyin startMachine () ile @Önce ve JVM, her test senaryosu çalıştırılmadan önce onu çalıştıracaktır.
- Yönteme açıklama ekleyin fırlatmak () ile @Sonra ve JVM, her test senaryosunun yürütülmesinden sonra onu çalıştıracaktır.
- Bu yöntemlerin her birine açıklama ekleyin Sıcak su (), Cappuccino () ve ExpressoCoffee () ile @Ölçek ve JVM, bunların yürütülecek JUnit sınıfı için temel test durumları olduğunu bilir.
Hemen bir göz atalım. JUnit 4 ve JUnit 5 için JUnit yaşam döngüsü geri arama ek açıklamaları
4 HAZİRAN DUYURUSU | HAZİRAN 5 DUYURUSU | |
---|---|---|
@Hayalhanemersin | 1. JUnit 5, @RepeatedTest annotation kullanılarak test yönteminin belirli sayıda tekrar tekrar yürütülmesini destekler | |
@Önce | @Evleneceksen | |
@Sonra | @Her birinden sonra | |
@Dersten önce | @Hepsinden önce | |
@Dersten sonra | @Sonunda | |
@Ölçek | @Ölçek |
Yaşam Döngüsü Ek Açıklamalarının Sıralı İş Akışı
Aşağıda, JUnit 4 için yaşam döngüsü ek açıklamalarının sıralı iş akışı verilmiştir:
- @BeforeClass ile açıklama eklenen yöntem, sınıfın başında bir kez çalıştırılır.
- @Before ile açıklama eklenen yöntem, Test senaryosu 1 başlamadan önce yürütülür.
- @Test ile açıklama eklenen Testcase1 yöntemi, sınıftaki test örneğidir.
- @After ile açıklama eklenen yöntem, Testcase 1 yürütmeyi tamamladıktan sonra çalışır.
- @Before ile açıklama eklenen yöntem, Test Case 2 başlamadan önce yürütülür.
- @Test ile açıklanmış Testcase2 yöntemi, sınıftaki test durumudur.
- @After ile açıklama eklenen yöntem, Testcase 2 yürütmeyi tamamladıktan sonra çalışır.
- @AfterClass ile açıklanmış yöntem, hem test senaryosu 1 hem de 2 yürütüldükten sonra sınıfın sonunda bir kez çalıştırılır.
JUnit 5 için yaşam döngüsü ek açıklamalarının sıralı iş akışı aşağıdaki gibidir:
- @BeforeAll ile açıklama eklenen yöntem, sınıfın başında bir kez çalıştırılır.
- @BeforeEach ile açıklama eklenen yöntem, Test Case 1 başlamadan önce çalıştırılır.
- @Test ile açıklama eklenen Testcase1 yöntemi, sınıftaki test örneğidir.
- @AfterEach ile açıklama eklenen yöntem, Testcase 1 yürütmeyi tamamladıktan sonra çalışır.
- @BeforeEach ile açıklama eklenen yöntem, Testcase 2 başlamadan önce çalıştırılır.
- @Test ile açıklanmış Testcase2 yöntemi, sınıftaki test durumudur.
- @AfterEach ile açıklama eklenen yöntem, Testcase 2 yürütmeyi tamamladıktan sonra çalışır.
- @AfterAll ile açıklama eklenen yöntem, hem test senaryosu 1 hem de 2 yürütüldükten sonra sınıfın sonunda bir kez çalıştırılır.
Her Ek Açıklamayla İlgili Ayrıntı
Bu bölümde derinlemesine inceleyelim ve her bir yaşam döngüsünün geri çağırma ek açıklamasının ne yaptığını ayrıntılı olarak anlayalım:
@Before (JUnit 4) / @ BeforeEach (JUnit 5):
- Açıklamalı yöntem, test sınıfındaki her test yönteminin yürütülmesinden önce yürütülür.
- Bu açıklama, kaynakların veya test verilerinin her bir testin başlamasından hemen önce ayarlanmasını istediğinizde kullanılabilir.
- Örneğin, Bir JUnit test sınıfında 5 Test senaryosu varsa, @ Before / @ BeforeEach ile not verilen yöntem, her test senaryosunun yürütülmesinden önce 5 kez çalıştırılır.
@After (JUnit 4) / @ AfterEach (JUnit 5):
- Açıklamalı yöntem, test sınıfındaki her test yöntemi çalıştırıldıktan sonra yürütülür.
- Bu açıklama, her test senaryosu çalıştırıldıktan sonra kullanılmış kaynakları veya test verilerini serbest bırakmak istediğinizde kullanılabilir.
- Örneğin, Bir JUnit test sınıfında 5 Test senaryosu varsa, @ After / @ AfterEach ile not verilen yöntem, test senaryolarının yürütülmesinden sonra 5 kez çalıştırılır.
@BeforeClass (JUnit 4) / @ BeforeAll (JUnit 5):
- Açıklamalı yöntem, bir test sınıfındaki tüm test yöntemleri yürütülmeden önce yürütülür.
- Bu açıklama, sınıf düzeyinde kaynakları ayarlamak veya verileri test etmek istediğinizde kullanılabilir.
- Bu yöntem @ BeforeClass / @ ile açıklandığı için, bir test sınıfı için yalnızca bir kez çalıştırılır ve yöntemin kopyası sınıfta paylaşılır ve yöntemin belirtilmesi gerekir statik.
- Örneğin, Bir JUnit test sınıfında 5 Test senaryosu varsa, @ BeforeClass / @ BeforeAll ile açıklanmış yöntem, herhangi bir test olayı başlatılmadan önce her test sınıfı için bir kez çalıştırılır.
@AfterClass (JUnit 4) / @ AfterAll (JUnit 5):
- Açıklamalı yöntem, bir test sınıfındaki tüm test yöntemleri çalıştırıldıktan sonra çalıştırılır.
- Bu ek açıklama, sınıf düzeyinde kullanılan kaynakları veya test verilerini yayınlamak istediğinizde kullanılabilir.
- Bu yöntem @ AfterClass / @ ile açıklandığı için AfterAll, bir test sınıfı için yalnızca bir kez çalıştırılır ve yöntemin kopyası sınıfta paylaşılır, yöntemin belirtilmesi gerekir statik.
- Örneğin, Bir JUnit test sınıfında 5 Test senaryosu varsa, @ AfterClass / @ AfterAll ile açıklanmış yöntem, tüm test durumlarının yürütülmesi tamamlandıktan sonra test sınıfı başına bir kez yürütülür.
@Test (JUnit 4 & JUnit 5):
- @Test ek açıklaması JUnit 4 ve JUnit 5 için ortaktır. Açıklamalı yöntemler, sınıftaki test durumlarını temsil eder.
- Bir JUnit sınıfında her biri @Test ile açıklanmış birden fazla yöntem olabilir. Bu, bir sınıfın birden fazla test senaryosuna sahip olabileceği anlamına gelir.
- Hangisinin geçirilebileceğini Test etmek için farklı öznitelikler veya parametreler vardır. Bir test senaryosu için zorunlu bir zaman aşımı ekleyebilir veya bir istisna ekleyebilirsiniz. Bu, ayrı bir öğreticide ayrıntılı olarak ele alınacaktır.
- Açıklamalı yöntem özel veya statik olamaz ve herhangi bir değer döndüremez.
- @Test yönteminin JUnit 4'te genel olarak bildirilmesi gerekirken Junit 5, varsayılan olarak 'erişim değiştirici yok' seçeneğini 'genel' olarak kabul ettiği için erişim değiştiricisi 'public' olmadan tanımlanan bir test senaryosuna izin verir.
Temel JUNIT Test Örneği
Temel HAZİRAN 4 @BeforeClass, @Before, @Test, @After ve @AfterClass ek açıklamaları örneği, 'Test Fikstürleri' ile ilgili önceki eğiticimizdeki açıklamasıyla birlikte kod aracılığıyla gösterildi.
Temel konuya bakalım JUnit 5 @BeforeAll, @BeforeEach, @Test, @AfterEach ve @AfterAll Lifecycle geri arama ek açıklamalarının nasıl çalıştığını gösteren program.
JUnit5Program.java için kod:
public class JUnit5Program { @BeforeAll public static void preClass() { System.out.println('@BeforeAll – the annotated method runs once before all other methods execute'); } @BeforeEach public void setUp() { System.out.println('_______________________________________________________
'); System.out.println('@BeforeEach – the annotated method executes before each test '); } @Test public void test_JUnit1() { System.out.println('@Test – this is test case 1'); } @Test public void test_JUnit2() { System.out.println('@Test – this is test case 2'); } @Test public void test_JUnit3() { System.out.println('@Test – this is test case 3'); } @AfterEach public void tearDown() { System.out.println('@AfterEach – the annotated method executes after each test executes'); System.out.println('_______________________________________________________
'); } @AfterAll public static void postClass() { System.out.println('@AfterAll – the annotated method runs once after all other methods execute'); } }
Sınıf dosyası çalıştırıldığında, aşağıdaki sonuç Konsol penceresinde görünür.
Ek Açıklamalar - JUnit 4 - JUnit 5
Belirli amaçlar için kullanılan birçok ek açıklama vardır. JUnit 4 ve JUnit 5 için ek açıklamaların listesini ve hizmet ettiği amaca kısaca bakacağız.
Gelecek eğitimlerimizde bu ek açıklamaların her biri hakkında ayrıntılı bir eğitim yer alacaktır.
4 HAZİRAN DUYURUSU | HAZİRAN 5 DUYURUSU | Kısaca açıklama |
---|---|---|
@DiksiyonMethodOrder | @TestMethodOrder & @Order | 1. Bu ek açıklamalar, kullanıcının bir test sınıfı içindeki yöntemlerin yürütme sırasını seçmesine olanak tanır |
@Kural & @ClassRule | @Evleneceksen | 1. @ Kural - Ek açıklama, test senaryolarında belirli kuralların uygulanmasına yardımcı olan TestRule sınıfından genişletilmiştir. 2. Örneğin: test çalışması yürütmeden önce geçici bir klasör oluşturmak ve yürütme sonrası klasörü silmek, bir Kural aracılığıyla ayarlanabilir. 3. @Rule yalnızca JUnit 5 Vintage'da kullanılabilen JUnit 4'te mevcuttur, ancak @ExtendWith, JUnit 5 için daha yakın bir özellik sağlar 4. Benzer şekilde, global bir zaman aşımı @ Kural kullanılarak ayarlanabilir. |
NA | @Hayalhanemersin | 1. Bu açıklama yalnızca JUnit 5 tarafından desteklenir ve dinamik veya çalışma zamanı testlerinin oluşturulmasına yardımcı olur. 2. Koleksiyon olarak bir veri akışı döndürür ve yaşam döngüsü geri arama açıklamalarını kullanamaz |
NA | @ İç içe | 1. Bu açıklama yalnızca JUnit Jupiter tarafından desteklenir 2. İç içe geçmiş test senaryoları oluşturmamıza yardımcı olur. 3. Örneğin, 1. test senaryosu olan Sınıf 1, test senaryosu 2 ile @ Yuvalanmış Sınıf 2'ye sahip olabilir. Bu, test senaryosu 2'yi 1. test senaryosu için iç içe geçmiş bir test senaryosu haline getirir. Dolayısıyla, 1. test senaryosu çalıştırılır, ardından 2. test örneği yürütülür. 4. @Nested bilgi notu kullanılmazsa, yuvalanmış sınıf çalışmayacaktır. |
@Kategori | @Etiket | 1. Bu açıklama, testleri etiketlemeye ve filtrelemeye yardımcı olur 2. Yürütme testlerini dahil edebilir veya dahil oldukları kategorilere göre filtreleyerek hariç tutabilirsiniz. |
@RunWith (Parametreli.class) @ Parametreli.Parametreler | @ParameterizedTest ve @ValueSource | 1. Bu açıklama, test verisi varyasyonlarına sahip bir yöntemi birden çok kez çalıştırmak için kullanılır. 2. JUnit 4, @RunWith ve @Parameters'ı desteklerken, JUnit 5 Jupiter @ValueSource ile @ParameterizedTest'i destekler |
@Ekran adı | 1. Kullanıcı tanımlı bir ad, görüntüleme amacıyla bir test yöntemine veya sınıfına verilebilir. | |
@TestInstance (LifeCycle.PER_CLASS) ve @TestInstance (LifeCycle.PER_METHOD) | 1. JUnit 5, testlerin yaşam döngüsünün yapılandırmasını destekler. 2. Hem JUnit 4 hem de 5, yöntem yaşam döngüsü başına varsayılan geri çağrıyı takip ederken, sınıf başına yapılandırma da yapılabilir. |
Referanslar => JUnit 4 , JUnit 5
Sonuç
- Geri arama açıklamaları ve test yöntemlerinin açıklamalarına göre yürüttüğü sıralı iş akışı yaşam döngüsü hakkında bilgi sahibi olduk.
- JUnit 4 için kullanılan notları ve JUnit 5 için notları öğrendik.
- Ayrıca JUnit 4'ün ve yalnızca JUnit 5'i destekleyen ek açıklamaları da öğrendik.
=> Burada Basit JUnit Eğitim Serisine Dikkat Edin.
Önerilen Kaynaklar
- JUnit Test Fikstürü Nedir: JUnit 4 Örnekleriyle Eğitim
- JUnit Testleri: Örneklerle JUnit Test Durumları Nasıl Yazılır
- Yeni Başlayanlar İçin JUnit Eğitimi - JUnit Testi Nedir?
- Eclipse'de JUnit'i İndirin, Kurun ve Yapılandırın
- JUnit Testlerini Yürütmenin Birden Çok Yolu
- JUnit Framework'e Giriş ve Selenium Script'te Kullanımı - Selenium Tutorial # 11
- Java'da Dizi ve Diğer Koleksiyonlar İçin Gizli Liste
- Java Liste Yöntemleri - Listeyi Sırala, İçerir, Liste Ekle, Liste Kaldır