خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه استفاده از اظهارات را در آزمون های JUnit خود بیاموزید

تست کلید موفقیت نرم افزار شما است و ادعاها کلید تست هستند. همه چیز را در مورد نحوه استفاده از آنها در JUnit بیاموزید.

کلاس JUnit Assertions شامل مجموعه ای از روش های ثابت است که به شما امکان می دهد تست های واحد را انجام دهید. اظهارات یکی از ویژگی های اصلی JUnit است. این کلاس بیش از پنجاه روش متنوع دارد. برخی از آزمون‌های کلاس Assertions در صورت درست بودن یک شرط با شکست مواجه می‌شوند، در حالی که برخی دیگر در صورت نادرست بودن یک شرط با شکست مواجه می‌شوند.

کلاس Assertions نیز متدهای سربارگذاری شده زیادی دارد. هر روش ادعایی حداقل دو روش اضافه بار دارد. برخی از متدهای محبوب‌تر کلاس Assertions را کشف کنید و نحوه استفاده از آنها را برای انجام تست‌های واحد بیابید.

روش assertEquals

روش JUnit 5 assertEquals بیش از ده تغییر دارد. این متد یکی از محبوب ترین متدهای کلاس Assertions است. یکی از تغییرات متد assertEquals یک مقدار مورد انتظار و تابعی را که می خواهید ارزیابی کنید (مقدار واقعی) می گیرد. دومین نوع اصلی آرگومان سوم اضافی را می گیرد. این یک پیغام خطایی است که در صورت شکست تست واحد JUnit نمایش داده می شود.

بارگذاری بیش از حد متد assertEquals با انواع داده های مختلف اتفاق می افتد. برخی از متدهای سربارگذاری assertEquals آرگومان چهارمی به نام دلتا می گیرند. نسخه های دیگر رشته شکست را با یک رابط کاربردی Supplier به شکل یک عبارت لامبدا جایگزین می کنند.

کلاس جاوا ادعاها روش ها

package com.program;

public class AssertionsMethods {
public static int square(int num) {
return num * num;
}
}

کلاس جاوا AssertionMethods فوق دارای یک متد به نام مربع است. متد مربع یک مقدار صحیح می گیرد و مربع آن را برمی گرداند. برای تست متد مربع و هر متد آینده از کلاس AssertionMethods باید یک مورد تست JUnit ایجاد کنید.

The AssertionsMethodsTest مورد آزمون JUnit

package com.program;

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

import org.junit.jupiter.api.Test;

class AssertionsMethodsTest {
@Test
void testSquare() {
assertEquals(25, AssertionMethods.square(5));
assertEquals(36, AssertionMethods.square(6), "Your square values did not match.");
assertEquals(49, AssertionMethods.square(7), () -> "Your square values did not match.");
}
}

متد testSquare() از سه تغییر assertEquals() برای تست متد Square() استفاده می کند. هر ()assertEquals یک موفقیت است، زیرا تمام مقادیر مورد انتظار با مقادیر واقعی برگردانده شده توسط متد مربع () مطابقت دارند.

روش assertNull

کلاس JUnit Assertion دقیقا سه متد assertNull دارد. هر یک از این متدها یک یا چند آرگومان را می گیرند و اگر شی داده شده null است، اظهار می کنند. اگر یک شی داده شده تهی نباشد، آنگاه آزمون با شکست مواجه خواهد شد.

@Test
public void testStringValue() {
String stringValue = null;
assertNull(stringValue);
assertNull(stringValue, "Your string value is not null");
assertNull(stringValue, () -> "Your string value is not null");
}

اولین متد assertNull() یک شی رشته را می گیرد و تهی بودن آن را بررسی می کند. متد دوم assertNull() یک شی رشته و یک پیام رشته را می گیرد تا در صورت شکست تست نمایش داده شود. سومین و آخرین متد assertNull() شی مورد نظر برای ارزیابی و یک رابط کاربردی Supplier را می گیرد.

در مورد آزمایشی بالا، رابط تامین کننده به عنوان یک هدف انتساب برای عبارت لامبدا عمل می کند. اگر آزمایش ناموفق باشد، عبارت lambda یک پیام خطا ایجاد می کند.

متد assertTrue

متد assertTrue() شش تغییر دارد. هر روش بیان می کند که آیا یک شرط داده شده درست است یا خیر. اگر شرط ()assertTrue نادرست باشد، آزمون با شکست مواجه خواهد شد.

@Test
void testEvenNumbers() {
int num1 = 10;
int num2 = 16;
int num3 = 26;
assertTrue(num1 < num2);
assertTrue(num3 > num2, "Your condition is not true.");
assertTrue(num1 < num3, () -> " Your condition is not true.");
assertTrue(() -> num1%2 == 0);
assertTrue(() -> num2%2 == 0, "Your value is not an even number.");
assertTrue(() -> num3%2 == 0, () -> "Your value is not an even number.");
}

متد testEvenNumbers() نحوه استفاده از هر شش متد assertTrue() را نشان می دهد. تمام روش های بالا درست هستند، بنابراین، این تست واحد بدون شکست یا خطا اجرا می شود.

  • assertTrue (شرط بولی): این روش یک شرط بولی را می گیرد و صحت آن را تأیید می کند. مثال این روش در کد بالا بیان می کند که آیا عدد صحیح اول از عدد دوم کمتر است.
  • assertTrue (شرط بولی، پیام رشته): این روش یک شرط بولی را برای آزمایش و یک رشته را برای نمایش در صورت نادرست بودن آن می گیرد.
  • assertTrue(شرط بولی، تامین کننده <رشته> messageSupplier): این روش یک رابط عملکردی Boolean و یک Supplier را به عنوان یک عبارت لامبدا می گیرد. تامین کننده پیام حاوی یک رشته است که در صورت نادرست بودن شرط بولی نمایش داده می شود.
  • assertTrue(BooleanSupplier booleanSupplier): این روش یک رابط کاربردی BooleanSupplier به شکل یک عبارت لامبدا می گیرد که درست یا نادرست ارزیابی می شود. مثال این روش در کد از عبارت lambda استفاده می کند. باقیمانده اولین عدد صحیح تقسیم بر دو را آزمایش می کند تا زوج یا فرد بودن آن را مشخص کند.
  • assertTrue (BooleanSupplier booleanSupplier, String message): این روش یک رابط کاربردی BooleanSupplier را به شکل یک عبارت لامبدا می گیرد. همچنین اگر BooleanSupier درست نباشد، یک پیام رشته ای برای چاپ لازم است.
  • assertTrue(BooleanSupplier booleanSupplier, Supplier messageSupplier): این روش یک رابط عملکردی BooleanSupplier را برای ادعا می گیرد. همچنین یک رابط کاربردی Supplier می گیرد، که یک عبارت لامبدا است که در صورت شکست تست، یک مقدار رشته را چاپ می کند.

روش assertFalse

متد assertFalse() مخالف متد assertTrue() است. این روش یک شرط معین را ارزیابی می کند تا ببیند آیا نادرست است یا خیر. اگر شرط داده شده درست باشد، آزمون assertFalse() با شکست مواجه خواهد شد. متد assertFalse() همچنین دارای شش تغییر است که همان آرگومان های همتای assertTrue() خود را می پذیرد.

@Test
void testNotEvenNumbers() {
int num1 = 11;
int num2 = 17;
int num3 = 27;
assertFalse(num2 < num1);
assertFalse(num2 > num3, " Your condition is not false.");
assertFalse(num3 < num1, () -> " Your condition is not false.");
assertFalse(() -> num1%2 == 0);
assertFalse(() -> num2%2 == 0, "Your value is an even number.");
assertFalse(() -> num3%2 == 0, () -> "Your value is an even number.");
}

شش متد assertFalse() در متد testNotEvenNumbers() همگی به false منجر می‌شوند، که به این معنی است که آزمون‌های assertFalse() موفق هستند.

مزایای تست واحد

تست واحد بخشی جدایی ناپذیر از فرآیند توسعه نرم افزار است. پروژه های نرم افزاری بزرگ به دلایل مختلف شکست می خورند، از تیم هایی که روی آنها کار می کنند تا رویکردهای توسعه.

هدف از تست واحد از بین بردن خرابی نرم افزار با ارائه تشخیص زودهنگام خطا است. این امر مستلزم آن است که تیم‌ها مشخصات واضحی ایجاد کنند، طراحی نرم‌افزار را از طریق مستندات خطا بهبود بخشند، و برای نگهداری نرم‌افزار پشتیبانی ارائه دهند.

تست واحد تنها رویکرد تست نرم افزاری نیست که باید در چرخه عمر توسعه خود به کار ببرید، فقط یک مکان بسیار خوب برای شروع است.

مطلب مرتبط:   7 فناوری منسوخ و حرفه هایی که هنوز از آنها استفاده می کنند