Java:
כתיבת בדיקות

איך לעשות:

מפתחי Java משתמשים בעיקר בשני מסגרות לבדיקות: JUnit ו-TestNG. כאן, נתמקד ב-JUnit, הבחירה הפופולרית יותר לכתיבת בדיקות בשל פשטותה והתפוצה הרחבה שלה.

הבסיס של JUnit

כדי להשתמש ב-JUnit בפרויקט Maven שלך, הוסף את התלות הבאה ל-pom.xml שלך:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.9.0</version>
    <scope>test</scope>
</dependency>

בדיקה בסיסית ב-JUnit נראית כך:

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

public class CalculatorTest {
    
    @Test
    public void testAdd() {
        Calculator calculator = new Calculator();
        assertEquals(5, calculator.add(2, 3), "2 + 3 אמור להשתוות ל-5");
    }
}

הרצת בדיקה זו תוכל לעבור, מה שמצביע על כך שהמתודה add פועלת כצפוי, או להיכשל, ולהציג הודעת שגיאה.

מדמה עם Mockito

בתרחישים מהעולם האמיתי, אובייקטים לעיתים תלויים באובייקטים אחרים. Mockito הוא מסגרת מדמה פופולרית שעוזרת ביצירת אובייקטים מדומים למטרות בדיקה.

הוסף את Mockito לפרויקט Maven שלך:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>4.5.1</version>
    <scope>test</scope>
</dependency>

שימוש בסיסי עם Mockito:

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;

public class UserServiceTest {

    @Test
    public void testGetUsername() {
        // יצירת מדמה ל-UserRepository
        UserRepository mockRepository = mock(UserRepository.class);

        // הגדרת התנהגות עבור אובייקט המדמה
        when(mockRepository.getUsername(1)).thenReturn("john_doe");

        UserService userService = new UserService(mockRepository);
        
        assertEquals("john_doe", userService.getUsername(1), "מזהה המשתמש 1 אמור להיות john_doe");
    }
}

המדמה הזה מאפשר לנו לבדוק את UserService בלי הצורך ב-UserRepository אמיתי, וממקד את הבדיקה בלוגיקה שבתוך UserService עצמו.