JAVAPRO_IR Telegram 4693
📘نوشتن Unit Test در Java با استفاده از JUnit

نوشتن آزمون‌های واحد (Unit Test) یکی از مهم‌ترین مراحل در توسعهٔ نرم‌افزار است که به برنامه‌نویسان امکان می‌دهد صحت عملکرد بخش‌های مختلف کد را به‌صورت مستقل ارزیابی کنند. فریم‌ورک JUnit یکی از پرکاربردترین ابزارهای آزمون‌نویسی در زبان Java است و با فراهم‌کردن ساختار استاندارد، اجرای تست‌ها را بسیار ساده می‌کند.

۱. ساختار کلی یک Unit Test در JUnit

هر تست معمولاً شامل سه مرحلهٔ اصلی است:

1. آماده‌سازی (Arrange): ایجاد ورودی‌ها و اشیای مورد نیاز.
2. اقدام (Act): فراخوانی تابع یا کلاس مورد نظر.
3. ارزیابی (Assert): بررسی خروجی و اطمینان از صحت عملکرد.

JUnit از annotation‌ها برای مشخص‌کردن نقش هر متد استفاده می‌کند. متداول‌ترین آن‌ها عبارتند از:

@Test برای علامت‌گذاری یک متد تست
@BeforeEach برای عملیات قبل از هر تست
@AfterEach برای عملیات پاک‌سازی پس از هر تست

۲. مثال ساده از یک کلاس و تست‌های آن

در ادامه کلاسی به نام Calculator تعریف می‌کنیم که یک تابع جمع دارد. سپس یک تست واحد برای آن خواهیم نوشت.

مثال: کلاس اصلی

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}


مثال: نوشتن تست با JUnit

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class CalculatorTest {

    @Test
    public void testAddition() {
        Calculator calculator = new Calculator();
        int result = calculator.add(5, 7);
        assertEquals(12, result);
    }
}


در این مثال، ابتدا شیء کلاس Calculator ساخته می‌شود. سپس متد add با ورودی‌های مشخص فراخوانی می‌گردد و نتیجهٔ حاصل با مقدار مورد انتظار مقایسه می‌شود. در صورتی‌که خروجی برابر با مقدار مورد انتظار نباشد، تست شکست خواهد خورد.

۳. استفاده از Annotationهای تکمیلی

گاهی لازم است قبل از اجرای هر تست، یک شیء اولیه‌سازی شود. در این حالت از @BeforeEach استفاده می‌کنیم. این کار باعث جلوگیری از تکرار کد نیز می‌شود.

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class CalculatorTest {

    private Calculator calculator;

    @BeforeEach
    public void setUp() {
        calculator = new Calculator();
    }

    @Test
    public void testAddition() {
        int result = calculator.add(10, 20);
        assertEquals(30, result);
    }

    @Test
    public void testAdditionWithNegativeNumbers() {
        int result = calculator.add(-5, -8);
        assertEquals(-13, result);
    }
}


در این نمونه، مقداردهی شیء calculator تنها یک‌بار قبل از هر تست انجام می‌شود، و هر تست مستقل از تست دیگر اجرا می‌گردد.

۴. اهمیت Assertها در JUnit

JUnit مجموعه‌ای از متدهای Assert را ارائه می‌دهد که امکان ارزیابی دقیق خروجی‌ها را فراهم می‌کنند. برای مثال:

assertEquals(expected, actual)
assertTrue(condition)
assertThrows(exceptionType, executable)

با استفاده از assertThrows می‌توانیم عملکرد صحیح برنامه در پاسخ به ورودی‌های نامعتبر را بررسی کنیم:

@Test
public void testDivisionByZero() {
    assertThrows(ArithmeticException.class, () -> {
        int x = 10 / 0;
    });
}


۵. نتیجه‌گیری

آزمون‌نویسی با JUnit روشی استاندارد و قابل اعتماد برای تضمین کیفیت کد است. با تعریف تست‌های واحد، توسعه‌دهنده می‌تواند ایرادهای احتمالی را در همان مراحل اولیه تشخیص دهد و از ایجاد خطاهای پیچیده در آینده جلوگیری کند. استفادهٔ صحیح از Annotationها، Assertها و ساختار مناسب تست‌ها، موجب افزایش پایداری، خوانایی و قابلیت نگه‌داری کد خواهد شد.
#کاربرـحرفهـای


🆔 @javapro_ir
🆔 @group_javapro
👍42



tgoop.com/javapro_ir/4693
Create:
Last Update:

📘نوشتن Unit Test در Java با استفاده از JUnit

نوشتن آزمون‌های واحد (Unit Test) یکی از مهم‌ترین مراحل در توسعهٔ نرم‌افزار است که به برنامه‌نویسان امکان می‌دهد صحت عملکرد بخش‌های مختلف کد را به‌صورت مستقل ارزیابی کنند. فریم‌ورک JUnit یکی از پرکاربردترین ابزارهای آزمون‌نویسی در زبان Java است و با فراهم‌کردن ساختار استاندارد، اجرای تست‌ها را بسیار ساده می‌کند.

۱. ساختار کلی یک Unit Test در JUnit

هر تست معمولاً شامل سه مرحلهٔ اصلی است:

1. آماده‌سازی (Arrange): ایجاد ورودی‌ها و اشیای مورد نیاز.
2. اقدام (Act): فراخوانی تابع یا کلاس مورد نظر.
3. ارزیابی (Assert): بررسی خروجی و اطمینان از صحت عملکرد.

JUnit از annotation‌ها برای مشخص‌کردن نقش هر متد استفاده می‌کند. متداول‌ترین آن‌ها عبارتند از:

@Test برای علامت‌گذاری یک متد تست
@BeforeEach برای عملیات قبل از هر تست
@AfterEach برای عملیات پاک‌سازی پس از هر تست

۲. مثال ساده از یک کلاس و تست‌های آن

در ادامه کلاسی به نام Calculator تعریف می‌کنیم که یک تابع جمع دارد. سپس یک تست واحد برای آن خواهیم نوشت.

مثال: کلاس اصلی

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
}


مثال: نوشتن تست با JUnit

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class CalculatorTest {

    @Test
    public void testAddition() {
        Calculator calculator = new Calculator();
        int result = calculator.add(5, 7);
        assertEquals(12, result);
    }
}


در این مثال، ابتدا شیء کلاس Calculator ساخته می‌شود. سپس متد add با ورودی‌های مشخص فراخوانی می‌گردد و نتیجهٔ حاصل با مقدار مورد انتظار مقایسه می‌شود. در صورتی‌که خروجی برابر با مقدار مورد انتظار نباشد، تست شکست خواهد خورد.

۳. استفاده از Annotationهای تکمیلی

گاهی لازم است قبل از اجرای هر تست، یک شیء اولیه‌سازی شود. در این حالت از @BeforeEach استفاده می‌کنیم. این کار باعث جلوگیری از تکرار کد نیز می‌شود.

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

public class CalculatorTest {

    private Calculator calculator;

    @BeforeEach
    public void setUp() {
        calculator = new Calculator();
    }

    @Test
    public void testAddition() {
        int result = calculator.add(10, 20);
        assertEquals(30, result);
    }

    @Test
    public void testAdditionWithNegativeNumbers() {
        int result = calculator.add(-5, -8);
        assertEquals(-13, result);
    }
}


در این نمونه، مقداردهی شیء calculator تنها یک‌بار قبل از هر تست انجام می‌شود، و هر تست مستقل از تست دیگر اجرا می‌گردد.

۴. اهمیت Assertها در JUnit

JUnit مجموعه‌ای از متدهای Assert را ارائه می‌دهد که امکان ارزیابی دقیق خروجی‌ها را فراهم می‌کنند. برای مثال:

assertEquals(expected, actual)
assertTrue(condition)
assertThrows(exceptionType, executable)

با استفاده از assertThrows می‌توانیم عملکرد صحیح برنامه در پاسخ به ورودی‌های نامعتبر را بررسی کنیم:

@Test
public void testDivisionByZero() {
    assertThrows(ArithmeticException.class, () -> {
        int x = 10 / 0;
    });
}


۵. نتیجه‌گیری

آزمون‌نویسی با JUnit روشی استاندارد و قابل اعتماد برای تضمین کیفیت کد است. با تعریف تست‌های واحد، توسعه‌دهنده می‌تواند ایرادهای احتمالی را در همان مراحل اولیه تشخیص دهد و از ایجاد خطاهای پیچیده در آینده جلوگیری کند. استفادهٔ صحیح از Annotationها، Assertها و ساختار مناسب تست‌ها، موجب افزایش پایداری، خوانایی و قابلیت نگه‌داری کد خواهد شد.
#کاربرـحرفهـای


🆔 @javapro_ir
🆔 @group_javapro

BY جاواپرو | برنامه نویسی جاوا | Java


Share with your friend now:
tgoop.com/javapro_ir/4693

View MORE
Open in Telegram


Telegram News

Date: |

Choose quality over quantity. Remember that one high-quality post is better than five short publications of questionable value. On June 7, Perekopsky met with Brazilian President Jair Bolsonaro, an avid user of the platform. According to the firm's VP, the main subject of the meeting was "freedom of expression." As of Thursday, the SUCK Channel had 34,146 subscribers, with only one message dated August 28, 2020. It was an announcement stating that police had removed all posts on the channel because its content “contravenes the laws of Hong Kong.” Channel login must contain 5-32 characters best-secure-messaging-apps-shutterstock-1892950018.jpg
from us


Telegram جاواپرو | برنامه نویسی جاوا | Java
FROM American