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
เอง