JUnit - Onaylamayı Kullanma

İddia

Tüm iddialar Assert sınıfındadır.

public class Assert extends java.lang.Object

Bu sınıf, test yazmak için yararlı olan bir dizi onaylama yöntemi sağlar. Yalnızca başarısız iddialar kaydedilir. Assert sınıfının önemli yöntemlerinden bazıları aşağıdaki gibidir -

Sr.No. Yöntemler ve Açıklama
1

void assertEquals(boolean expected, boolean actual)

İki temel öğenin / nesnenin eşit olup olmadığını kontrol eder.

2

void assertTrue(boolean condition)

Bir koşulun doğru olup olmadığını kontrol eder.

3

void assertFalse(boolean condition)

Bir koşulun yanlış olup olmadığını kontrol eder.

4

void assertNotNull(Object object)

Bir nesnenin boş olmadığını kontrol eder.

5

void assertNull(Object object)

Bir nesnenin boş olup olmadığını kontrol eder.

6

void assertSame(object1, object2)

AssertSame () yöntemi, iki nesne başvurusunun aynı nesneyi işaret edip etmediğini test eder.

7

void assertNotSame(object1, object2)

AssertNotSame () yöntemi, iki nesne başvurusunun aynı nesneyi işaret edip etmediğini test eder.

8

void assertArrayEquals(expectedArray, resultArray);

AssertArrayEquals () yöntemi, iki dizinin birbirine eşit olup olmadığını test eder.

Bir örnekte yukarıda belirtilen yöntemlerden bazılarını kullanalım. Adlı bir java sınıf dosyası oluşturunTestAssertions.java C: \> JUNIT_WORKSPACE konumunda.

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

public class TestAssertions {

   @Test
   public void testAssertions() {
      //test data
      String str1 = new String ("abc");
      String str2 = new String ("abc");
      String str3 = null;
      String str4 = "abc";
      String str5 = "abc";
		
      int val1 = 5;
      int val2 = 6;

      String[] expectedArray = {"one", "two", "three"};
      String[] resultArray =  {"one", "two", "three"};

      //Check that two objects are equal
      assertEquals(str1, str2);

      //Check that a condition is true
      assertTrue (val1 < val2);

      //Check that a condition is false
      assertFalse(val1 > val2);

      //Check that an object isn't null
      assertNotNull(str1);

      //Check that an object is null
      assertNull(str3);

      //Check if two object references point to the same object
      assertSame(str4,str5);

      //Check if two object references not point to the same object
      assertNotSame(str1,str3);

      //Check whether two arrays are equal to each other.
      assertArrayEquals(expectedArray, resultArray);
   }
}

Ardından, adında bir java sınıf dosyası oluşturun TestRunner.java C: \> JUNIT_WORKSPACE içinde test olay (lar) ını yürütmek için.

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner2 {
   public static void main(String[] args) {
      Result result = JUnitCore.runClasses(TestAssertions.class);
		
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
		
      System.out.println(result.wasSuccessful());
   }
}

Test durumunu ve Test Runner sınıflarını javac kullanarak derleyin.

C:\JUNIT_WORKSPACE>javac TestAssertions.java TestRunner.java

Şimdi, sağlanan Test Case sınıfında tanımlanan test senaryosunu çalıştıracak olan Test Runner'ı çalıştırın.

C:\JUNIT_WORKSPACE>java TestRunner

Çıkışı doğrulayın.

true

Ek açıklama

Ek açıklamalar, kodunuza ekleyebileceğiniz ve bunları yöntemlere veya sınıfta uygulayabileceğiniz meta etiketler gibidir. JUnit'teki bu ek açıklamalar, test yöntemleri hakkında aşağıdaki bilgileri sağlar -

  • test yöntemlerinden önce ve sonra hangi yöntemlerin çalıştırılacağı.
  • tüm yöntemlerden önce ve sonra hangi yöntemlerin çalıştığı ve.
  • yürütme sırasında hangi yöntemlerin veya sınıfların yoksayılacağı.

Aşağıdaki tablo ek açıklamaların bir listesini ve bunların JUnit'teki anlamlarını sağlar -

Sr.No. Ek Açıklama ve Açıklama
1

@Test

Test ek açıklaması JUnit'e eklendiği genel void yönteminin bir test senaryosu olarak çalıştırılabileceğini söyler.

2

@Before

Birkaç testin çalıştırılmadan önce benzer nesnelerin oluşturulmasına ihtiyacı vardır. Bir genel void yöntemine @Before ile açıklama eklemek, bu yöntemin her Test yönteminden önce çalıştırılmasına neden olur.

3

@After

Bir Before yönteminde harici kaynakları ayırırsanız, bunları test çalıştırdıktan sonra serbest bırakmanız gerekir. Genel bir void yöntemine @After ile açıklama eklemek, bu yöntemin Test yönteminden sonra çalıştırılmasına neden olur.

4

@BeforeClass

Genel bir statik void yöntemine @BeforeClass ile açıklama eklemek, bu yöntemin sınıftaki herhangi bir test yönteminden önce bir kez çalıştırılmasına neden olur.

5

@AfterClass

Bu, yöntemi tüm testler bittikten sonra gerçekleştirecektir. Bu, temizlik faaliyetlerini gerçekleştirmek için kullanılabilir.

6

@Ignore

Yoksay notu, testi yok saymak için kullanılır ve bu test yürütülmez.

Adlı bir java sınıf dosyası oluşturun JunitAnnotation.java ek açıklamayı test etmek için C: \> JUNIT_WORKSPACE içinde.

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 JunitAnnotation {
	
   //execute before class
   @BeforeClass
   public static void beforeClass() {
      System.out.println("in before class");
   }

   //execute after class
   @AfterClass
   public static void  afterClass() {
      System.out.println("in after class");
   }

   //execute before test
   @Before
   public void before() {
      System.out.println("in before");
   }
	
   //execute after test
   @After
   public void after() {
      System.out.println("in after");
   }
	
   //test case
   @Test
   public void test() {
      System.out.println("in test");
   }
	
   //test case ignore and will not execute
   @Ignore
   public void ignoreTest() {
      System.out.println("in ignore test");
   }
}

Ardından, adında bir java sınıf dosyası oluşturun TestRunner.java ek açıklamaları yürütmek için C: \> JUNIT_WORKSPACE içinde.

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

Test durumunu ve Test Runner sınıflarını javac kullanarak derleyin.

C:\JUNIT_WORKSPACE>javac JunitAnnotation.java TestRunner.java

Şimdi, sağlanan Test Case sınıfında tanımlanan test senaryosunu çalıştıracak olan Test Runner'ı çalıştırın.

C:\JUNIT_WORKSPACE>java TestRunner

Çıkışı doğrulayın.

in before class
in before
in test
in after
in after class
true