junit vs testng what are differences
JUnit Vs TestNG çerçeveleri arasında kapsamlı bir karşılaştırma. Ek açıklamaların karşılaştırmasını ve örneklerle özellik açısından karşılaştırmayı içerir:
Önceki eğiticide, JRE sürümü, çevresel değişkenler vb. Gibi farklı kriterlere dayalı olarak DisplayName ek açıklamasını ve koşullu test yürütmeyi öğrendik. Konuyla ilgili bazı önemli soruları da ele aldık.
Önceki derslerde sürekli olarak JUnit hakkında bilgi sahibi olduğumuzdan, bu ders dinleyicilerimiz için bir nefes alma işlevi görecek ve bir süre odak noktamızı JUnit'ten JUnit ile TestNG arasındaki karşılaştırmaya kaydıracağız.
=> Mükemmel JUnit Eğitim Kılavuzuna Buradan Bakabilirsiniz.
Ne öğreneceksin:
- JUnit Vs TestNG: Bir Karşılaştırma
- Sonuç
JUnit Vs TestNG: Bir Karşılaştırma
Özellikleri | JUnit | TestNG |
---|---|---|
Testler için Zaman Aşımı | Evet | Evet |
Açık kaynak çerçevesi | Evet JUnit açık kaynaklı bir çerçevedir | Evet TestNG açık kaynaklı bir çerçevedir |
Kullanıcı dostu | JUnit farklı modüllere dağıtılmıştır, örneğin: ? Parametrelendirme için JUnit Jupiter'e ihtiyacınız olabilir. ? Bu, JUnit'i TestNG'ye kıyasla biraz daha hantal hale getirir | Tüm TestNG özellikleri tek bir modülde gelir. Bu, TestNG'yi daha kullanıcı dostu hale getirir. |
Başlıca IDE desteği ( Misal: Eclipse, IntelliJ) | Evet Her ikisi de IDE'nin çoğunu eşit şekilde destekler | Evet Her ikisi de IDE'nin çoğunu eşit şekilde destekler |
Ek Açıklamaların Uygulanması | Evet JUnit, farklı özellikler için küçük varyasyonlara sahip ek açıklamalar üzerinde çalışır | Evet TestNG, farklı özellikler için küçük varyasyonlara sahip ek açıklamalar üzerinde çalışır |
Yönetim Beyanlarının Uygulanması | Evet JUnit, TestNG'deki iddialarda bazı varyasyonlarla beklenen ve gerçek sonuçları doğrulamak için yeterli iddia sağlar. | Evet TestNG ayrıca beklenen ve gerçek sonuçların karşılaştırılması için çok sayıda iddiayı destekler. Ek olarak, TestNG, iddialar için iki mekanizma sağlar - Yumuşak Onaylama ve Sert Onaylama |
İstisnalar | Evet JUnit, TestNG'ye küçük bir varyasyonla İstisna testi özelliği sunar | Evet TestNG ayrıca İstisna testi özelliği de sağlar |
Parametreli testler | Evet JUnit parametreli testleri destekler | Evet TestNG ayrıca parametreli testleri de destekler |
Test odası | Evet JUnit, test paketlerinin kullanımını destekler | Evet TestNG, Test Suite'i de destekler. |
Bağımlılık Testi | Yapma JUnit, bağımlılık testi özelliğini desteklemiyor | Evet Bu, JUnit üzerinden TestNG'deki gelişmiş bir özelliktir. Bu özellikle, bir yöntem diğerine bağımlı hale getirilebilir, böylece yöntem yalnızca bağımlı yöntem çalıştıktan ve geçtikten sonra çalışır, aksi takdirde bağımlı test çalışmaz. |
Paralel Test Yürütme | Yapma JUnit'te paralel yürütme mevcut değildir | Evet TestNG, testlerin paralel yürütülmesini destekler ancak JUnit desteklemez. Paralel yürütmenin ayarlanabileceği bir TestNG xml var |
Maven Entegrasyonu | Evet Her iki araç da Maven Entegrasyonunu destekler | Evet Her iki araç da Maven Entegrasyonunu destekler |
Varsayımların Gerçekleştirilmesi | Evet Varsayımlar, belirli varsayımlara veya koşullara dayalı testleri atlamak için kullanılır. ve bu yalnızca JUnit'te geçerlidir. | Yapma TestNG, Varsayımları desteklemez |
Test Yürütme Sırası | Evet Junit, test yürütme sırasını destekler. | Evet TestNG, test yürütme sırasını destekler |
Dinleyicilerin Uygulanması | Evet JUnit, dinleyicileri ek açıklamalar aracılığıyla değil, Dinleyici API'si aracılığıyla destekler. | Evet TestNG, ek açıklamalar aracılığıyla dinleyicileri destekler. |
Testleri Yoksay | Evet Her ikisi de testlerin devre dışı bırakılmasını destekler, ancak JUnit farklı koşullara göre yürütme için testlerin devre dışı bırakılmasını destekler | Evet Her ikisi de testlerin devre dışı bırakılmasını destekler |
Raporlama | Evet JUnit, HTML raporları oluşturmak için maven ile entegre edilmelidir | Evet TestNG kendi yerleşik HTML raporlarına sahiptir. Maven ile veya ATU raporu veya Kapsam raporları gibi harici raporlama kitaplıkları ile entegre edilebilir |
Ek Açıklamaların Karşılaştırması
TestNG ve JUnit, Java dünyasından birim test çerçeveleri. Her ikisi de çok yakın ve benzer özellikler uygular. Bu bölümde, birkaç özelliğin uygulanmasındaki bazı benzerliklere bakarken, JUnit ve TestNG'de farklı şekilde uygulanan diğer birkaç özelliği de göreceğiz.
# 1) Test yöntemi açıklaması
Hem JUnit hem de TestNG'de bir yöntemi test yöntemi olarak belirleme şeklimizde bir fark yoktur.
JUnit 5 | TestNG |
---|---|
@Ölçek | @Ölçek |
# 2) Suite ile ilgili açıklama
- @BeforeSuite ek açıklamasına sahip bir yöntem, mevcut test paketi çalışmadan önce bir kez yürütülür.
- Bu açıklama yalnızca TestNG'de geçerlidir.
JUnit 5 | TestNG |
---|---|
Uygulanamaz | @Evleneceksen |
# 3) Sınıftan önceki bir yöntem için ek açıklama
Bu, sınıftaki ilk test yöntemi çalıştırılmadan önce bir kez yürütülecek yöntemin ek açıklamasıdır.
JUnit 5 | TestNG |
---|---|
@Hepsinden önce | @Dersten önce |
# 4) Testten önceki bir yöntem için ek açıklama
- Bu açıklama, testng.xml etiketinin içinde bildirilen yöntemlerden önce bir kez yürütülür.
- Bu ek açıklama yalnızca TestNG için kullanılabilir.
JUnit 5 | TestNG |
---|---|
Uygulanamaz | @Evleneceksen |
# 5) @Test çağrısı ile her yöntemden önce yürütülecek yöntemin ek açıklaması
JUnit 5 | TestNG |
---|---|
@Evleneceksen | @Evleneceksen |
# 6) @ Test çağrısı ile her yöntemden sonra yürütülecek yöntemin ek açıklaması
JUnit 5 | TestNG |
---|---|
@Her birinden sonra | @AfterMethod |
# 7) Test sonrası yöntem için ek açıklama
- Bu açıklama, testng.xml etiketinin içinde bildirilen yöntemlerden sonra bir kez yürütülür.
- Bu ek açıklama yalnızca TestNG için kullanılabilir.
JUnit 5 | TestNG |
---|---|
Uygulanamaz | @FterTest |
# 8) Dersten sonra yöntem için ek açıklama
Bu, sınıftaki son test yöntemi çalıştırıldıktan sonra bir kez yürütülecek yöntemin ek açıklamasıdır.
JUnit 5 | TestNG |
---|---|
@Sonunda | @Dersten sonra |
# 9) Test yönteminin yürütülmesini devre dışı bırakmak için ek açıklama.
- JUnit 5, belirli bir test yürütmesini devre dışı bırakmak için bir açıklama sağlar.
- TestNG, @Test için bir öznitelik sağlar, yani yöntemin çalıştırılmasının devre dışı bırakılacağına veya etkinleştirileceğine karar veren boole değeriyle 'etkin'
JUnit 5 | TestNG |
---|---|
@aldırmamak | @Test (etkin = yanlış) |
Bakın Öğretici 7 Yürütmeyi Atlama JUnit4 ve JUnit 5 testlerinin nasıl devre dışı bırakılacağını anlamak için
# 10) Zaman aşımı açıklaması
Ek açıklama JUnit 5 ve TestNG için aynıdır
JUnit 5 | TestNG |
---|---|
@Test (zaman aşımı = 2000) | @Test (zaman aşımı = 2000) |
# 11) Beklenen İstisna özelliği
- İstisna sınıfı, test yürütüldüğünde, verilen sınıfın istisnasının atıldığını belirtir.
- Bu, hem JUnit hem de TestNG'de desteklenir ve her ikisinin de beyan edilme biçimindeki varyasyonla desteklenir.
JUnit 5 | TestNG | |
---|---|---|
@Test (beklenen = NullPointerException.class) | @Test (beklenenException = NullPointerException.class) |
# 12) Suite ile ilgili açıklama
- @AfterSuite ek açıklamasına sahip bir yöntem, geçerli test paketi çalıştıktan sonra bir kez yürütülür.
- Bu açıklama yalnızca TestNG'de geçerlidir.
JUnit 5 | TestNG |
---|---|
Uygulanamaz | @Kafadergisi |
# 13) Grupla ilgili açıklama
- Ek açıklama yalnızca TestNG'de mevcuttur.
- @BeforeGroups notuna sahip yöntem, belirli bir gruba ait test yöntemleri çalışmadan önce çalışır.
JUnit 5 | TestNG | |
---|---|---|
Uygulanamaz | @Evleneceksen |
- Ek açıklama yalnızca TestNG'de mevcuttur.
- @BeforeGroups notuna sahip yöntem, belirli bir gruba ait test yöntemleri çalıştıktan sonra çalışır.
JUnit 5 | TestNG |
---|---|
Uygulanamaz | @AfterGroups |
# 14) Yürütme Sırasıyla ilgili ek açıklamalar
Hem JUnit hem de TestNG, yürütme için testlerin sırasını açıkça belirlemeyi destekler. Başka bir deyişle, test senaryoları için önceliğin belirlenmesi.
- JUnit 5, ek açıklama için bir girdi parametresi olarak MethodOrderer paketinin yerleşik sınıfıyla (Alphanumeric.class veya OrderAnnotation.class veya Random.class) @TestMethodOrder () ek açıklamasına sahiptir.
Bakın Öğretici 9 - Junit Test Yürütme Sırası JUnit'te test yürütme sırasını ayarlama hakkında daha fazla ayrıntı için.
- TestNG, sayısal bir değeri kabul eden @Test ek açıklaması için 'öncelik' özelliğini içerir.
JUnit 5 | TestNG |
---|---|
@TestMethodOrder (Alfanümerik.class) | @Test (öncelik = 1) |
TestNG ve JUnit 4 için Temel Program
# 1) TestNG Kodu
package newtest.com; import org.testng.annotations.Test; import org.testng.annotations.BeforeMethod; import org.testng.annotations.AfterMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.BeforeClass; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeTest; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeSuite; import org.testng.annotations.AfterSuite; public class NewTestng { @Test(dataProvider = 'dp') public void f(Integer n, String s) { System.out.println(' * * * * * * *Parameterized method * * * * * * * * * '); System.out.println('Integer '+n+' String '+s); System.out.println(' * * * * * * * * * * * * * * * * '); } @BeforeMethod public void beforeMethod() { System.out.println('Before Method'); } @AfterMethod public void afterMethod() { System.out.println('After Method'); } @DataProvider public Object()() dp() { return new Object()() { new Object() { 1, 'a' }, new Object() { 2, 'b'}, }; } @BeforeClass public void beforeClass() { System.out.println('Before Class'); } @AfterClass public void afterClass() { System.out.println('After Class'); } @BeforeTest public void beforeTest() { System.out.println('Before Test'); } @AfterTest public void afterTest() { System.out.println('After Test'); } @BeforeSuite public void beforeSuite() { System.out.println('Before Suite'); } @AfterSuite public void afterSuite() { System.out.println('After Suite'); } }
Beklenen çıktı:
# 2) JUnit 4 Kodu
package demo.tests; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.BeforeClass; import org.junit.AfterClass; public class JunitTest { @Parameterized.Parameters public static Object()() data() { return new Object(3)(0); } @BeforeClass public static void beforeClass() { System.out.println('Before Class'; } @Before public void beforeMethod() { System.out.println('Before Method'); } @Test public void f() { System.out.println(' * * * * * * *test * * * * * * * * * '); int n=10; System.out.println('Integer '+n); System.out.println(' * * * * * * * * * * * * * * * * '); } @After public void afterMethod() { System.out.println('After Method'); } @AfterClass public static void afterClass() { System.out.println('After Class'); } }
Beklenen çıktı:
JUnit 5 vs TestNG: Örneklerle Özellik Farkı
# 1) Test Paketi
- Test paketi, bir testler koleksiyonudur, yani birden çok sınıftan birden çok test vakasını bir şekilde bir araya getiriyoruz.
- TestNG'nin kullandığı yaklaşım, JUnit'inkinden farklı ve güçlüdür.
JUnit 5'te test paketi
JUnit 5'in Test paketini nasıl uyguladığına hızlıca bakalım.
Bakın Öğretici 8 -JUnit Test Paketleri ve Filtreleme JUnit 4 ve JUnit 5'teki Test paketinin uygulanmasının daha iyi anlaşılması için test senaryoları.
@RunWith(JUnitPlatform.class) @SelectClasses({JUnit5TestCase1.class, JUnit5TestCase2.class }) public class JUnitTestSuite { }
TestNG'de test paketi
TestNG, mantıksal olarak bağlanan tüm Test sınıflarını sarmak için aşağıdaki şablon olarak XML kullanır
# 2) Parametreli Test
Hem TestNG hem de JUnit, veri varyasyonlarıyla aynı testleri çalıştırmaktan başka bir şey olmayan testlerin parametrelendirilmesine izin verir.
JUnit 4'te parametreleştirilmiş test
@RunWith(value=Parameterized.class) public class JUnitclass{ int n; public JUnitclass (int num){ this.n=num; } @Parameters public static Iterable data(){ Object()() objectArray =new Object()() {{1},{2},{3}}; returnArrays.asList(objectArray); } @Test public void Junittst(){ System.out.println(“Multiples of 2 are :”+ 2*n); } }
TestNG'de parametreleştirilmiş test
TestNG'de parametreleştirmeyi nasıl kullanabileceğinizin 2 yolu vardır
- @Parameters ve TestNG XML'den geçme
- Ek açıklama @DataProvider
a) @Parameters ve TestNG XML'den geçme
public class testins{ @Test @Parameters(value=”env_pd”) public void paramEnv(str env_pd){ If(env_pd=”QA”){ url=”definetest.com” } else if(env_pd=”accpt”){ url=”defineacc.com” }}}
Aynısı için XML
b) DataProvider
DataProvider ek açıklaması her zaman nesnelerin dizisi olan Object () () döndürür.
@DataProvider(name='state') public Object()() getDataFromDataprovider(){ return new Object()() { { 'Maharashtra', 'Pune' }, { 'Karnataka', 'Bangalore' }, { 'Kerala', 'Trivandrum' } }; @Test(dataProvider=”state”) public void paramMethd(str stateName, str cityName){ System.out.println(stateName+” ”+cityName); }
# 3) Zaman Aşımı
Belirli bir test öngörülen sürede tamamlanmazsa, zaman aşımına uğrar. Diğer yandan, İş Parçacığı kesintiye uğrar.
c ++ java'dan daha iyidir
JUnit'te zaman aşımı
JUnit'te Zaman Aşımı uygulamasına yönelik farklı yaklaşımlar vardır. Bunlar:
- Normal zaman aşımını belirli milisaniyelerle kullanma
- İddia ile zaman aşımını kullanma
- Global zaman aşımını kullanma
JUnit 4 ve JUnit 5 için zaman aşımına odaklanan ayrıntılı bir öğreticimiz olacak.
Aşağıda, JUnit 5'te normal Zaman Aşımının kullanımını gösteren pasaj bulunmaktadır:
@Test(timeout = 5000) public void testTimeout() throws InterruptedException { while (true) { } }
5 saniye sonra yukarıdaki test zaman aşımı.
TestNG'de zaman aşımı
TestNG ayrıca Zaman Aşımı uygulamasının basit yolunu kullanır:
@Test(timeout = 5000) public void testTimeout() throws InterruptedException { while (true) { } }
# 4) İstisna Testi
İstisna testi, bu önceden tanımlanmış istisnanın atılması durumunda, sorunsuz bir şekilde yakalanmasını ve günlüklere bildirilmesini sağlar.
JUnit 4'te İstisna Testi
@Test (expected = NumberFormatException.class) public void converttoint() { Int j=Integer.parseInt(“Four”); }
Ayrıntılı olarak JUnit 4 ve 5 için İstisnaları kapsayan ayrı bir eğitim olacaktır.
TestNG'de İstisna Testi
TestNG'de İstisna testi bildiriminde küçük bir değişiklik var:
@Test (expectedExceptions = NumberFormatException.class) public void converttoint() { Int j=Integer.parseInt(“Four”); }
# 5) Testi Devre Dışı Bırak
Hem TestNG hem de JUnit, yürütme için bir testin devre dışı bırakılmasına izin verir.
JUnit 5'te Devre Dışı Test
@ Sınıfın en üstünde kullanıldığında ek açıklama devre dışı bırakılır, sınıftaki tüm testler yürütme için atlanır. Ek açıklama, belirli bir @Test yönteminin üstünde kullanıldığında, söz konusu test senaryosu yürütme için devre dışı bırakılır.
import org.junit.AfterClass; @Disabled('the testcase is under development') public class JUnitProgram {
TestNG'de Devre Dışı Test
TestNG, @Test notunun 'etkinleştirildi' özniteliği false olarak ayarlandığında ve öznitelik true olarak ayarlandığında etkinleştirildiğinde testin yürütmeyi devre dışı bırakmasına izin verir. Bir sınıftaki tüm testlerin etkinleştirilmesi gerekiyorsa, her @Test yöntemi için açık bir şekilde etkin = doğru olarak işaretleyin.
Aşağıda bir testin atlandığını gösteren kod parçacığı bulunmaktadır.
@Test(enabled=false) public void f_validate(){ // let us skip this function}
# 6) Grup Testleri
İnsanların JUnit'in belirli bir grup adıyla testlerin gruplandırılmasını asla desteklemediğinden bahsettiği birçok site ve forumda çelişkili ifadeler olmuştur.
@BeforeGroups ve @AfterGroups ek açıklamaları yalnızca TestNG ile birlikte gelir ancak JUnit 4 ve JUnit 5'te gruplamaya izin verilir. Burada JUnit 5'te grup testlerinin kullanımını hızlı bir şekilde göstereceğiz. Grup testleri JUnit 4 ve Etiketlerdeki Kategoriler olarak anılacaktır. JUnit 5'te.
Bakabilirsiniz Öğretici 8 - JUnit Test Takımları ve Filtreleme Testleri JUnit'te kullanımla ilgili ayrıntılar için.
JUnit 5'de Grup Testleri
@Tag(“Regression”) @Test public void junitMethod1(){} @Tag(“SmokeTest”) @Test public void junitMethod2(){
JUnit5TestSuite.java'dan kod pasajı:
Aşağıdaki kod, 'Regresyon' adlı grubu içerir ve junitMethod1 () 'in çalıştırılacağını, ancak junitMethod2 () hariç tutulduğunu belirten 'SmokeTest' grubunu hariç tutar.
@RunWith(JUnitPlatform.class) @SelectPackages({“demo.tests“}) @IncludeTags(“Regression”) @ExcludeTags(“SmokeTest”) public class JUnit5TestSuite { }
TestNG'de Grup Testleri
Yukarıdaki kod parçasının TestNG'de yorumlanması gerekiyorsa, aynı kod aşağıdadır:
@Test(groups={“Regression” }) public void junitMethod1(){} @Test(groups={“SmokeTest” }) public void junitMethod2(){}
TestNG XML aşağıdaki gibidir:
Burada, Regresyon grubu yöntemleri koşucuya dahil edilirken, SmokeTest dahil olmak üzere grupların geri kalanı hariç tutulur.
# 7) Paralel Testler
Bu, yalnızca TestNG ile kullanılabilen özelliktir. Genellikle, test senaryoları birbiri ardına çağrılan türden iş parçacıklarıdır. Ancak, yürütme süresinden tasarruf etmek isterseniz, paralel olarak çalıştırılacak testleri ayarlayarak ve aynı anda çalışması gereken iş parçacığı sayısını sağlayarak bunu TestNG'de kontrol edebilirsiniz.
Burada kısaca yöntemlere bağlı kullanımlarını göstereceğiz ve gruplara bağlı olarak tartışmayacağız.
açık kaynak rest api test araçları
Başka bir yöntem üzerindeki bağımlı test, TestNG XML aracılığıyla aşağıdaki gibi ayarlanır:
# 8) Bağımlı Testler
Bağımlı testler, yalnızca TestNG ile kullanılabilen gelişmiş özelliklerdir. Bağımlılıklar bir teste veya bir gruba bağlı olabilir.
@Test mytest1(){ System.out.println(“My test : mytest1”); } @Test (dependensOnMethods={“mytest1”}) public void mytest2(){ System.out.println(“My test : mytest2”); }
Yukarıdaki programda, mytest2, mytest1'e bağlı olduğundan önce mytest1 çalışır ve sonra mytest2 çalıştırılır. Test1 başarısız olursa, test2 çağrılmayacaktır. Yürütmek istediğiniz belirli bir iş akışını kontrol etmek için bağımlı test senaryoları bu şekilde önceden tanımlanabilir.
# 9) Dinleyiciler
Dinleyiciler, testler içinde meydana gelen her olayı dinler. Dinleyiciler hem JUnit'te hem de TestNG'de desteklenir. Bu nedenle, test başlamadan önce, test bittikten sonra, test atlandığında, test geçildiğinde veya başarısız olduğunda günlükte belirli görevleri gerçekleştirmek veya belirli bir mesaj göstermek isterseniz, bu Dinleyici işlevlerine sahibiz. Bunu yap
JUnit, Listener sınıfını kullanır ve TestNG, bir Dinleyici arabirimi kullanır. TestNG, Dinleyici arabirim yöntemlerini tanımlayan bir dinleyici sınıfı yazar ve ikinci adım, ana sınıfta @ Listeners ek açıklamasını kullanarak bu Dinleyici sınıf adını çağırmaktır.
JUnit ayrıca, bir veya daha fazla ana sınıfa dinleyici işlevlerini uygulamak için bir Listener çalıştırıcı sınıfının tanımlandığı Listener ebeveyn sınıfından yöntemleri miras alır.
TestNG'de dinleyici
TestNG'nin uygulandığı bir ITestListener arayüzü vardır.
ITestListener uygulandığında tanımlanması gereken yöntemler aşağıdadır -
- OnTestStart ()
- Test Başarısız ()
- OnTestSuccess ()
- OnTestSkipped ()
- Başlarken ()
- OnFinish ()
Aşağıda onTestStart () ve onTestSuccess () 'i gösteren kod parçacığı bulunmaktadır.
import org.testng.ITestListener; import org.testng.ITestResult; public class TestListener implements ITestListener { @Override public void onTestStart(ITestResult result) { System.out.println('Execution started: '+result.getName()); } @Override public void onTestSuccess(ITestResult result) { System.out.println('Test Passed '+result.getName()); }
Bu dinleyici sınıfını aşağıda gösterildiği gibi @Listener ek açıklamasını kullanarak ana sınıfınızda çağırın:
import org.testng.annotations.Listeners; import org.testng.annotations.Test; @Listeners(com.javatpoint.Listener.class) public class MymainClass { @Test public void sum() {
JUnit 5'de dinleyici
RunListener, Dinleyici işlevlerini tanımlamak için dinleyici sınıfınız tarafından genişletilmesi gereken sınıftır.
JUnit için aşağıdaki yöntemlerimiz var:
- testRunStarted
- testRunFinished
- test hatası
- göz ardı edildi
import org.junit.runner.notification.Failure; import org.junit.runner.notification.RunListener; public class Mylistenerclass extends RunListener { public void testRunStarted(Description desc) throws java.lang.Exception { System.out.println('Execution started' + desc.getMethodName()); } public void testRunFinished(Description desc) throws java.lang.Exception { System.out.println('Execution finished' + desc.getMethodName()); }
Yukarıdaki dinleyici sınıfını çağırmak için bir dinleyici yürütme sınıfı yaratılması gerekir.
Dinleyici Mylistener sınıfını test yöntemleriyle birden çok sınıfa uygulayabilirsiniz.
public class ListenerRunner { public static void main(String() args) { JUnitCore runme = new JUnitCore(); runme.addListener(new ListenerRunner()); runner.run(FirstClass.class, SecondClass.class); }
Sonuç
Bu JUnit Vs TestNG eğitiminde TestNG ve JUnit çerçevelerini karşılaştırdık. Hem çerçevelerde desteklenen ortak özellikleri hem de yalnızca TestNG'de desteklenen ek özellikleri öğrendik. Görünüşe göre, paralel yürütme ve bağımlılık testleri gibi yalnızca TestNG'de birkaç ekstra özellik var. TestNG tarafından desteklenen özelliklerin çoğu JUnit'te de mevcuttur.
Ortak özellikler için JUnit ve TestNG'de sözdizimi, terminolojiler açısından küçük sapmalar var. JUnit'in TestNG üzerindeki gücünü baltalayanlar şimdiye kadar fark etmiş olacaktı, yani JUnit aynı zamanda güçlü otomasyon çerçevelerinden biridir.
JUnit'in daha birçok ilginç yönüyle geri döneceğiz. Yaklaşan eğitimlere bağlı kalın !!!
Önerilen Kaynaklar
- Yeni Başlayanlar İçin JUnit Eğitimi - JUnit Testi Nedir?
- JUnit Ek Açıklamalarının Listesi: JUnit 4 Vs JUnit 5
- JUnit 5 Annotation @RepeatedTest Örneklerle Nasıl Kullanılır
- JUnit Ignore Test Case: JUnit 4 @Ignore Vs JUnit 5 @Disabled
- TestNG Kurulumu, Temel Program ve Raporlar
- TestNG Ek Açıklamaları ve Dinleyicileri
- TestNG Eğitimi: TestNG Çerçevesine Giriş
- Junit ve TestNG Çerçevelerini Kullanan Selenium'daki İddialar