جيه يونت

جيه يتونت JUnit  هو إطار اختبار الوحدة للغة جافا البرمجية. لا يزال جيه يونت جزء لا يتجزأ في مجال التطويرالبرمجي القائم على الاختبار، وهو واحد من عائلة أطر اختبار الوحدة التي تُعرف بشكل جماعي باسم أكس يونت xUnit التي نشأت مع أس يونت SUnit.

جيه يونت مرتبط كـ جار في وقت التجميع؛ يتواجد الإطار تحت الحزمة junit.framework لـ JUnit 3.8 والإصدارات الأقدم، وفي إطار الحزمة org.junit لـ JUnit 4 والإصدارات الأحدث.
اخر إصدار لجيه يونت هو الأصدار الخامس الذي تميز بعدة تحديثات أهمها الترقية من JDK5 إلى JDK 8 وأيضاً أصبحت التدوينات البرمجية أفضل من حيث المقروئية.
وجد مسح بحثي تم إجراؤه في عام 2013 عبر 10000 مشروع جافا مستضاف على موقع غيت هب أن جيه يونت (بالتشارك مع slf4j-api)، كانت المكتبة الخارجية الأكثر شيوعًا. تم استخدام كل مكتبة بنسبة 30.7٪ من المشاريع.

مثال على تركيبات اختبار جيه يونت 
تركيبات اختبار جيه يونت هي كائن جافا. مع الإصدارات القديمة من جيه يونت، كان على التركيبات أن ترث من junit.framework. TestCase، ولكن الاختبارات باستخدام JUnit 4 لا يتوجب عليها ذلك. يجب تعليم الطرق المختبرة بالتدوين البرمجي annotation، التدوين البرمجي يتم على سبيل المثال بواسطة Test@. إذا تطلب الوضع ذلك،  من الممكن أيضا تحديد طريقة لتنفيذ قبل (أو بعد) كل واحدة (أو جميع) طرق الاختبار بواسطة التدوينات البرمجية Before@ (أو After@) و BeforeClass@ (أو AfterClass@).

مثال جيه يونت 4 
import org.junit.*;

public class FoobarTest {
  @BeforeClass
  public static void setUpClass() throws Exception {
    // يتم تشغيل الكود قبل تنفيذ طريقة الاختبار الأولى
  }
 
  @Before
  public void setUp() throws Exception {
    // الكود ينفذ قبل كل اختبار
  }
 
  @Test
  public void testOneThing() {
    // الكود الذي يختبر شيء معين
  }

  @Test
  public void testAnotherThing() {
    // كود يختبر شيء أخر
  }

  @Test
  public void testSomethingElse() {
    // كود يختبر شي مختلف عما سبق
  }

  @After
  public void tearDown() throws Exception {
    // كود ينفذ بعد كل اختبار
  }
 
  @AfterClass
  public static void tearDownClass() throws Exception {
    //كود يتم تنفيذه بعد أخر طريقة اختبار 
  }
}

مثال جيه يونت 5 
أحد الأمثلة البسيطة على جيه يونت 5:package com.example.project;

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
;

class CalculatorTests {

	@Test
	@DisplayName("2 * 5 = 10")
	void multiTwoNumbers() {
		Calculator calculator = new Calculator();
		assertEquals(2, calculator.multi(2, 5), "2 * 5 = 10");
	}

	void multi(int x, int y, int expectedResult) {
		Calc calculator = new Calc();
		assertEquals(expectedResult, calc.multi(x, y),
				() -> x + " * " + y + " = " + expectedResult);
	}
}

المراجع

روابط خارجية 

 
 عرض JUnit
 دروس JUnit

أدوات تطوير برمجيات جافا
برمجيات تستخدم رخصة إكليبس العمومية
برمجيات حرة بلغة جافا
برمجيات متعددة المنصات
برمجة قصوى
منصة جافا