Java:
การเขียนการทดสอบ

วิธีการ:

นักพัฒนา Java โดยหลักใช้เฟรมเวิร์กการทดสอบสองตัวคือ: JUnit และ TestNG ที่นี่เราจะเน้นไปที่ JUnit, ตัวเลือกยอดนิยมสำหรับการเขียนการทดสอบเนื่องจากมีความเรียบง่ายและได้รับการนำไปใช้กันอย่างแพร่หลาย

พื้นฐานของ JUnit

เพื่อใช้ JUnit ในโปรเจ็กต์ Maven ของคุณ ให้เพิ่ม dependency ดังต่อไปนี้เข้าไปใน 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), "User ID 1 ควรจะเป็น john_doe");
    }
}

การม็อกนี้ช่วยให้เราสามารถทดสอบ UserService โดยไม่จำเป็นต้องมี UserRepository จริง, โฟกัสการทดสอบไปที่โลจิกภายใน UserService เอง