JUnit - Test Çerçevesi

JUnit bir Regression Testing Frameworkgeliştiriciler tarafından Java'da birim testi uygulamak ve programlama hızını artırmak ve kod kalitesini artırmak için kullanılır. JUnit Framework aşağıdakilerden biriyle kolayca entegre edilebilir -

  • Eclipse
  • Ant
  • Maven

JUnit Test Çerçevesinin Özellikleri

JUnit test çerçevesi aşağıdaki önemli özellikleri sağlar -

  • Fixtures
  • Test paketleri
  • Test koşucuları
  • JUnit sınıfları

Fikstür

Fixturestestleri çalıştırmak için temel olarak kullanılan bir dizi nesnenin sabit durumudur. Bir test fikstürünün amacı, sonuçların tekrarlanabilir olması için testlerin yürütüldüğü iyi bilinen ve sabit bir ortamın olmasını sağlamaktır. İçerir -

  • setUp () yöntemi, her test çağrısından önce çalışır.
  • Her test yönteminden sonra çalışan tearDown () yöntemi.

Bir örneğe bakalım -

import junit.framework.*;

public class JavaTest extends TestCase {
   protected int value1, value2;
   
   // assigning the values
   protected void setUp(){
      value1 = 3;
      value2 = 3;
   }

   // test method to add two values
   public void testAdd(){
      double result = value1 + value2;
      assertTrue(result == 6);
   }
}

Test Takımları

Bir test paketi, birkaç birim test durumunu bir araya getirir ve birlikte çalıştırır. JUnit'te, süit testini çalıştırmak için hem @RunWith hem de @Suite ek açıklaması kullanılır. Aşağıda, TestJunit1 ve TestJunit2 test sınıflarını kullanan bir örnek verilmiştir.

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

//JUnit Suite Test
@RunWith(Suite.class)

@Suite.SuiteClasses({ 
   TestJunit1.class ,TestJunit2.class
})

public class JunitTestSuite {
}
import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestJunit1 {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
   
   @Test
   public void testPrintMessage() {	
      System.out.println("Inside testPrintMessage()");    
      assertEquals(message, messageUtil.printMessage());     
   }
}
import org.junit.Test;
import org.junit.Ignore;
import static org.junit.Assert.assertEquals;

public class TestJunit2 {

   String message = "Robert";	
   MessageUtil messageUtil = new MessageUtil(message);
 
   @Test
   public void testSalutationMessage() {
      System.out.println("Inside testSalutationMessage()");
      message = "Hi!" + "Robert";
      assertEquals(message,messageUtil.salutationMessage());
   }
}

Test Koşucuları

Test çalıştırıcısı, test senaryolarının yürütülmesi için kullanılır. İşte test sınıfını varsayan bir örnekTestJunit zaten var.

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

JUnit Sınıfları

JUnit sınıfları, JUnitlerin yazılması ve test edilmesinde kullanılan önemli sınıflardır. Önemli sınıflardan bazıları -

  • Assert - Bir dizi iddia yöntemi içerir.

  • TestCase - Fikstürü birden çok test çalıştırmak için tanımlayan bir test senaryosu içerir.

  • TestResult - Bir test senaryosu yürütmenin sonuçlarını toplama yöntemlerini içerir.