0Pricing
Kotlin Academy · บทเรียน

การเขียนเทสต์ด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเขียนเทสต์ด้วย JUnit5
  2. การยืนยันผล
  3. การจำลองด้วย MockK
  4. การทดสอบ Coroutine
← กลับไปที่ Kotlin Academy