การเขียนเทสต์ด้วย JUnit5
จัดโครงสร้างเทสต์
การเขียนเทสต์ด้วย JUnit5 เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
JUnit5 คืออะไร
JUnit5 (JUnit Jupiter) คือเฟรมเวิร์กการทดสอบมาตรฐานสำหรับ JVM และ Kotlin โดยมีแอนโนเทชันสำหรับระบุและจัดโครงสร้างโค้ดการทดสอบ
- การทดสอบอยู่ใน
src/test/kotlin - การทดสอบแต่ละรายการเป็นฟังก์ชัน
- ตัวเรียกใช้จะดำเนินการทดสอบและรายงานผลลัพธ์
การเพิ่มการพึ่งพา
เพิ่ม JUnit Jupiter ลงในการกำหนดค่าการทดสอบ แล้วเปิดใช้งานแพลตฟอร์ม JUnit
dependencies {
testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
}
tasks.test {
useJUnitPlatform()
}การทดสอบแรกของคุณ
ใส่แอนโนเทชัน @Test ให้กับฟังก์ชัน การทดสอบจะตรวจยืนยันบางสิ่งเกี่ยวกับโค้ดของคุณ
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.Assertions.assertEquals
class MathTest {
@Test
fun addsTwoNumbers() {
assertEquals(4, 2 + 2)
}
}ชื่อการทดสอบที่สื่อความหมาย
ใช้ @DisplayName เพื่อให้รายงานการทดสอบอ่านง่าย โดยไม่ต้องตั้งชื่อฟังก์ชันให้ยาว
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.DisplayName
class OrderTest {
@Test
@DisplayName("total includes tax")
fun totalWithTax() {
// ...
}
}การตั้งค่าด้วย @BeforeEach
@BeforeEach จะทำงานก่อนการทดสอบทุกครั้ง จึงเหมาะสำหรับสร้างชุดข้อมูลตั้งต้นใหม่ ส่วน @AfterEach จะทำงานหลังการทดสอบแต่ละครั้งเพื่อทำความสะอาด
import org.junit.jupiter.api.BeforeEach
class CartTest {
private lateinit var cart: MutableList<String>
@BeforeEach
fun setUp() {
cart = mutableListOf()
}
}การตั้งค่าระดับคลาส
@BeforeAll และ @AfterAll จะทำงานครั้งเดียวสำหรับคลาสทั้งหมด ใน Kotlin แอนโนเทชันเหล่านี้ต้องใช้ร่วมกับ companion object ที่มี @JvmStatic (หรือใช้วงจรชีวิตแบบต่อคลาส)
import org.junit.jupiter.api.BeforeAll
class DbTest {
companion object {
@BeforeAll
@JvmStatic
fun connect() {
// open shared connection
}
}
}เตรียมการ-ดำเนินการ-ตรวจสอบ
จัดโครงสร้างการทดสอบแต่ละรายการเป็นสามขั้นตอนที่ชัดเจน:
- เตรียมการ — ตั้งค่าอินพุตและสถานะ
- ดำเนินการ — เรียกใช้โค้ดที่กำลังทดสอบ
- ตรวจสอบ — ตรวจยืนยันผลลัพธ์
รูปแบบนี้ช่วยให้การทดสอบอ่านง่ายและมุ่งเน้นเฉพาะประเด็น
การทดสอบแบบซ้อน
@Nested ใช้จัดกลุ่มการทดสอบที่เกี่ยวข้องกัน ทำให้ได้รายงานรูปต้นไม้ซึ่งช่วยบันทึกพฤติกรรมของโค้ด
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
class StackTest {
@Nested
inner class WhenEmpty {
@Test fun isEmpty() { /* ... */ }
}
}การทดสอบแบบใช้พารามิเตอร์
เรียกใช้การทดสอบเดียวกันกับอินพุตหลายค่าโดยใช้ @ParameterizedTest และแหล่งค่า
import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.ValueSource
import org.junit.jupiter.api.Assertions.assertTrue
class NumberTest {
@ParameterizedTest
@ValueSource(ints = [2, 4, 6])
fun isEven(n: Int) {
assertTrue(n % 2 == 0)
}
}การปิดใช้งานและการติดแท็ก
ข้ามการทดสอบชั่วคราวด้วย @Disabled และจัดกลุ่มการทดสอบด้วย @Tag เพื่อให้คุณรวมหรือตัดการทดสอบเหล่านั้นออกจากการทำงานของ CI ได้
import org.junit.jupiter.api.Disabled
import org.junit.jupiter.api.Tag
import org.junit.jupiter.api.Test
class FlakyTest {
@Test
@Disabled("fix later")
@Tag("slow")
fun pending() { }
}ตัวอย่างแบบจบในตัว
ต่อไปนี้คือตัวอย่างฟังก์ชัน pure-Kotlin อย่างง่ายและแนวคิดเบื้องหลังการทดสอบฟังก์ชันนี้ (ตัวการทดสอบเองทำงานภายใต้ JUnit)
fun add(a: Int, b: Int): Int = a + b
fun main() {
val result = add(2, 3)
println(if (result == 5) "PASS" else "FAIL")
}ตรวจสอบอย่างรวดเร็ว
คุณต้องการรายการว่างใหม่ก่อนเมธอดการทดสอบแต่ละรายการ แอนโนเทชันใดเหมาะสม
สรุปทบทวน
คุณสามารถจัดโครงสร้างการทดสอบ JUnit5 ได้ดังนี้:
@Testใช้ระบุการทดสอบ ส่วน@DisplayNameใช้ตั้งชื่อ@BeforeEach/@BeforeAllใช้จัดการการตั้งค่า- รูปแบบเตรียมการ-ดำเนินการ-ตรวจสอบช่วยให้การทดสอบชัดเจน
@Nestedและ@ParameterizedTestช่วยจัดระเบียบและเพิ่มขนาดการทดสอบ
ถัดไป: การตรวจยืนยัน
คำถามที่พบบ่อย
บทเรียน “การเขียนเทสต์ด้วย JUnit5” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเขียนเทสต์ด้วย JUnit5” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเขียนเทสต์ด้วย JUnit5”
จัดโครงสร้างเทสต์ คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การเขียนเทสต์ด้วย JUnit5” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเขียนเทสต์ด้วย JUnit5
- การยืนยันผล
- การจำลองด้วย MockK
- การทดสอบ Coroutine