Junit Assert & AssertEquals ile Örnek

⚡ Akıllı Özet

JUnit Assert ve AssertEquals, beklenen ve gerçek değerleri karşılaştırarak bir test durumunun başarılı veya başarısız olup olmadığını belirler. Bu kaynak, org.junit.Assert tarafından sağlanan assert yöntemlerini, boolean, null, kimlik, eşitlik ve dizi doğrulamaları da dahil olmak üzere, eksiksiz bir çalışma örneğiyle birlikte açıklamaktadır.

  • Amaç: org.junit.Assert'ten gelen assert metotları koşulları doğrular ve test hatalarını tespit eder.
  • 🔢 Yöntem Türleri: Boolean, null, identical, equals, array-equals ve fail-message doğrulama ifadeleri yaygın kontrolleri kapsar.
  • 🟰 eşit olduğunu doğrula: equals() metodunu kullanarak değerleri karşılaştırır, sarmalar.ping Önce temel veri türlerini nesnelere dönüştürün.
  • 🔬 Kayan nokta: Kayan noktalı veya çift duyarlıklı değerleri karşılaştırırken delta toleransı gereklidir.
  • 🧪 Örnek: Bir test sınıfı ve çalıştırıcısı, her temel doğrulama ifadesinin doğru sonuç verdiğini göstermektedir.

JUnit Assert ve AssertEquals

Junit Assert nedir?

Assert yöntemi, bir test durumunun başarılı (Pass) veya başarısız (Fail) olduğunu belirlemede kullanışlıdır. Assert yöntemleri, java.lang.Object sınıfını genişleten org.junit.Assert sınıfı tarafından sağlanır.

Mantıksal (Boolean), sıfır (null), özdeş (identical) gibi çeşitli doğrulama türleri vardır.

JUnit Bu, test senaryoları yazmada ve test hatalarını tespit etmede faydalı olan bir dizi doğrulama yöntemi sağlayan Assert adlı bir sınıf sunar.

Assert yöntemleri sınıf tarafından sağlanır org.junit.İddiaBu da genişletir java.lang.Object sınıf.

JUnit Yöntemleri iddia et

Boole

Mantıksal (doğru veya yanlış) koşulları test etmek istiyorsanız, aşağıdaki doğrulama yöntemlerini kullanabilirsiniz:

  1. iddiaTrue(koşul)
  2. iddiaYanlış(koşul)

Burada koşul bir boole değeridir.

Boş nesne

Bir nesnenin/değişkenin başlangıç ​​değerini kontrol etmek istiyorsanız, aşağıdaki yöntemlere sahipsiniz:

  1. iddiaNull(nesne)
  2. iddiaNotNull(nesne)

Burada nesne bir Java nesne, örneğin iddiaNull(gerçek);

Aynı

Nesnelerin özdeş olup olmadığını kontrol etmek istiyorsanız (yani, aynı nesneye yapılan iki referansı karşılaştırmak istiyorsanız) Java nesne) veya farklı:

  1. aynı olduğunu doğrula(beklenen, gerçek) — Eğer doğruysa true değerini döndürecektir. beklenen == gerçek.
  2. iddiaNotSame(beklenen, gerçek)

Eşittir İddiası

İki nesnenin eşitliğini test etmek istiyorsanız, aşağıdaki yöntemi kullanabilirsiniz:

  • iddiaEquals(beklenen, gerçek)

Eğer doğruysa dönecektir beklenen.eşittir(gerçek) doğru döndürür.

Dizinin Eşit Olduğunu İddia Edin

Dizilerin eşitliğini test etmek istiyorsanız, aşağıdaki yöntemi kullanabilirsiniz:

  • iddiaArrayEquals(beklenen, gerçek)

Dizilerin uzunlukları aynıysa yukarıdaki yöntem kullanılmalıdır. Her geçerli değer için iaşağıda verildiği gibi kontrol edebilirsiniz:

  • assertEquals(expected[i], actual[i])
  • assertArrayEquals(expected[i], actual[i])

Başarısız Mesajı

Herhangi bir iddia hatası atmak istiyorsanız, hata()Bu durum her zaman başarısızlıkla sonuçlanır.

  • başarısız(mesaj);

Ek bir doğrulama yöntemine sahip olabilirsiniz. dizi Parametreyi ilk parametre olarak belirtin. Bu dize, doğrulama başarısız olursa hata mesajına eklenecektir. Örneğin, başarısız(mesaj) şu şekilde yazılabilir:

  • assertEquals(mesaj, beklenen, gerçek)

JUnit iddiaEşittir

Sen var assertEqual(a, b), şuna dayanır: eşittir () Object sınıfının yöntemi.

  • Burada şu şekilde değerlendirilecektir: a.eşittir(b).
  • Burada test edilen sınıf uygun bir eşitlik ilişkisini belirlemek için kullanılır.
  • Bir sınıf geçersiz kılmazsa eşittir () yöntem nesne Bu sınıf, varsayılan davranışını alacaktır. eşittir () yöntem, yani nesne kimliği.

If a hem de b gibi ilkellerdir bayt, int, booleEğer durum böyleyse, assertEquals(a, b) için aşağıdaki işlemler yapılacaktır:

a hem de b eşdeğer sarmalayıcı nesne türüne dönüştürülecek (Bayt, Tamsayı, Mantıksal Değer, vb.) ve ardından a.eşittir(b) değerlendirilecektir.

Örneğin, aynı değerlere sahip aşağıdaki dizeleri ele alalım; bunu assertEquals kullanarak test edelim:

String obj1 = "Junit";
String obj2 = "Junit";
assertEquals(obj1, obj2);

Yukarıdaki assert ifadesi, obj1.equals(obj2) true döndürdüğü için true değerini döndürecektir.

Kayan nokta iddiaları

Kayan noktalı sayı türlerini karşılaştırmak istediğinizde (örneğin, çift or şamandıra), ek bir gerekli parametreye ihtiyacınız var, deltaBu sayede, kayan noktalı karşılaştırmalar yapılırken yuvarlama hatalarından kaynaklanan sorunlardan kaçınılabilir.

İddia aşağıdaki gibi değerlendirilir:

  • Math.abs(beklenen – gerçek) <= delta

Örneğin:

assertEquals(aDoubleDeğer, başkaDoubleDeğer, 0.001)

JUnit İddia Örneği

Aşağıdaki örnek, bir koşulun nasıl doğrulanacağını göstermektedir. JUnit yöntemleri ileri sürer.

Şimdi basit bir test sınıfı oluşturalım. Junit4AssertionTest.java ve bir test koşucusu sınıfı TestRunner.java.

Birkaç değişken ve önemli doğrulama ifadesi oluşturacaksınız. JUnit.

Bu örnekte, TestRunner.java kullanarak test sınıfımızı çalıştıracaksınız.

) 1 Adım Tüm önemli assert ifadesi yöntemlerini kapsayan bir sınıf oluşturalım. JUnit:

Junit4AssertionTest.java

package guru99.junit;

import static org.junit.Assert.*;
import org.junit.Test;

public class Junit4AssertionTest {

    @Test
    public void testAssert() {

        // Variable declaration
        String string1 = "Junit";
        String string2 = "Junit";
        String string3 = "test";
        String string4 = "test";
        String string5 = null;
        int variable1 = 1;
        int variable2 = 2;
        int[] airethematicArrary1 = { 1, 2, 3 };
        int[] airethematicArrary2 = { 1, 2, 3 };

        // Assert statements
        assertEquals(string1, string2);
        assertSame(string3, string4);
        assertNotSame(string1, string3);
        assertNotNull(string1);
        assertNull(string5);
        assertTrue(variable1 < variable2);
        assertArrayEquals(airethematicArrary1, airethematicArrary2);
    }
}

) 2 Adım Yukarıdaki sınıfı çalıştırmak için bir test çalıştırıcı sınıfı oluşturmanız gerekiyor:

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(Junit4AssertionTest.class);
        for (Failure failure : result.getFailures()) {
            System.out.println(failure.toString());
        }
        System.out.println("Result==" + result.wasSuccessful());
    }
}

) 3 Adım Beklenen çıktıyı adım adım analiz edelim. Tüm doğrulama ifadelerini tek tek ele alalım:

  1. assertEquals(string1, string2);

Şimdi string1="Junit" ile string2="Junit" ifadelerini Object sınıfının equals metoduyla karşılaştırın. assertEquals metodunu java.lang.Object.equals() metoduyla değiştirin:

string1.equals(string2) => true döndürür

Dolayısıyla assertEquals(string1, string2) şu sonucu döndürecektir: gerçek.

  1. iddiaSame(string3, string4);

“assertSame()” işlevi, iki nesnenin aynı nesneye referans verip vermediğini kontrol etmek içindir. string3=”test” ve string4=”test” olduğundan, hem string3 hem de string4 aynı türdedir, bu nedenle assertSame(string3, string4) boş değer döndürecektir. gerçek.

  1. iddiaNotSame(dize1, dize3);

“assertNotSame()” işlevi, iki nesnenin aynı nesneye referans vermediğini kontrol etmek içindir. string1=”Junit” ve string3=”test” olduğundan, hem string1 hem de string3 farklı türdedir, bu nedenle assertNotSame(string1, string3) yanlış değer döndürecektir. gerçek.

  1. iddiaNotNull(string1);

“assertNotNull()” işlevi, bir nesnenin null olmadığını kontrol etmek içindir. string1=”Junit” null olmayan bir değer olduğundan, assertNotNull(string1) null döndürecektir. gerçek.

  1. iddiaNull(string5);

“assertNull()” işlevi, bir nesnenin null olup olmadığını kontrol etmek içindir. string5=null olduğundan ve bu da null bir değer olduğundan, assertNull(string5) bir değer döndürecektir. gerçek.

  1. doğru olduğunu doğrula(değişken1 < değişken2);

“assertTrue()” işlevi, bir koşulun doğru olup olmadığını kontrol etmek içindir. variable1=1 ve variable2=2 olduğundan, variable1 < variable2 koşulunun doğru olduğunu gösterir; bu nedenle assertTrue(variable1 < variable2) ifadesi true değerini döndürür. gerçek.

  1. iddiaArrayEquals(airethematicArrary1, airethematicArrary2);

“assertArrayEquals()” işlevi, beklenen dizi ile elde edilen dizinin eşit olup olmadığını kontrol etmek içindir. Dizi türü int, long, short, char, byte veya java.lang.Object olabilir. airethematicArrary1 = { 1, 2, 3 } ve airethematicArrary2 = { 1, 2, 3 } olduğundan, her iki dizinin de eşit olduğunu gösterir; bu nedenle assertArrayEquals(airethematicArrary1, airethematicArrary2) doğru sonuç döndürecektir. gerçek.

Yedi iddianın tamamı doğru olduğundan Junit4AssertionTest.java Bu sınıf, `assert` testini çalıştırdığınızda `true` değerini döndürür ve başarılı bir test sonucu verir (aşağıdaki çıktıya bakın).

) 4 Adım Junit4AssertionTest.java dosyasına sağ tıklayın ve "Çalıştır" seçeneğine tıklayın. JUnit. Çıktıyı aşağıda verildiği gibi göreceksiniz:

JUnit İddia Örneği

Yukarıdaki çıktı, beklendiği gibi başarılı bir test sonucunu göstermektedir.

SSS

Evet. Yapay zeka asistanları, bir metodun beklenen davranışından yola çıkarak assertEquals, assertTrue ve diğer doğrulama ifadelerini üretebilir. Yine de testlerin anlamlı olduğundan emin olmak için beklenen değerleri ve uç durumları gözden geçirmelisiniz.

Evet. Yapay zeka, karşılaştırdığınız şeye bağlı olarak assertEquals, assertSame veya assertArrayEquals seçeneklerini önerebilir. Bu, değerleri karşılaştırmak istediğinizde referansları kontrol etmek gibi yaygın hataları azaltır.

`assertEquals`, `equals()` metodunu kullanarak değer eşitliğini kontrol eder. `assertSame`, iki referansın bellekteki tam olarak aynı nesneye işaret ettiğini kontrol eder. Eşit değere sahip iki nesne `assertSame` testinde başarısız olabilir.

Bir iddia başarısız olduğunda, JUnit Bir AssertionError hatası fırlatır, testi başarısız olarak işaretler ve hata ayıklamanıza yardımcı olmak için beklenen ve gerçek değerlerle birlikte isteğe bağlı mesajı bildirir.

Bu yazıyı şu şekilde özetleyin: