tgoop.com/javapro_ir/4693
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
