Kotlin में परीक्षण: Unit, Integration, E2E — पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें
```html

कोटलिन परीक्षण का परिचय: यूनिट से एंड-टू-एंड तक

गुणवत्तापूर्ण कोड बेस स्वचालित परीक्षण के बिना संभव नहीं है। कोटलिन, JVM के लिए एक आधुनिक भाषा के रूप में, डेवलपर्स को विश्वसनीय परीक्षण बनाने के लिए समृद्ध टूलकिट प्रदान करता है। इस लेख में, हम कोटलिन के संदर्भ में परीक्षण पिरामिड के तीन स्तरों पर चर्चा करेंगे: unit (मॉड्यूलर), integration (एकीकरण) और e2e (एंड-टू-एंड)। आप सीखेंगे कि JUnit 5, MockK, Ktor Client और Selenium जैसे लोकप्रिय फ्रेमवर्क का उपयोग करके कोटलिन में प्रभावी परीक्षण कैसे लिखें।



1. कोटलिन में Unit-परीक्षण: स्थिरता का आधार

Unit-परीक्षण बाहरी निर्भरताओं से अलग करके अलग-अलग फ़ंक्शन, क्लास या मेथड के काम की जाँच करते हैं। कोटलिन में इसके लिए अक्सर JUnit 5 का उपयोग मॉक लाइब्रेरी MockK के साथ किया जाता है।



1.1. प्रोजेक्ट सेटअप

build.gradle.kts फ़ाइल में निर्भरताएँ जोड़ें:

dependencies {    testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")    testImplementation("io.mockk:mockk:1.13.8")}


1.2. MockK के साथ unit-परीक्षण का उदाहरण

मान लीजिए हमारे पास एक सेवा UserService है जो रिपॉजिटरी पर निर्भर करती है:

class UserService(private val repository: UserRepository) {    fun getUserName(id: Long): String {        val user = repository.findById(id)        return user?.name ?: "Unknown"    }}

MockK का उपयोग करके परीक्षण:

import io.mockk.everyimport io.mockk.mockkimport org.junit.jupiter.api.Testimport kotlin.test.assertEquals

class UserServiceTest { @Test fun `return userName when user exists`() { val mockRepo = mockk<UserRepository>() every { mockRepo.findById(1L) } returns User(1L, "Alice") val service = UserService(mockRepo)

val result = service.getUserName(1L)

assertEquals("Alice", result) }}


1.3. Unit-परीक्षण के सर्वोत्तम अभ्यास

  • निर्भरताओं को अलग करें — सभी बाहरी कॉल (डेटाबेस, API) के लिए मॉक का उपयोग करें।
  • सीमांत मामलों का परीक्षण करें: null, खाली स्ट्रिंग, ऋणात्मक संख्याएँ।
  • स्पष्ट परीक्षण नामों का उपयोग करें — उन्हें परिदृश्य और अपेक्षित परिणाम का वर्णन करना चाहिए।
  • AAA सिद्धांत का पालन करें: Arrange (तैयारी), Act (कार्य), Assert (जाँच)।


2. कोटलिन में एकीकरण परीक्षण: अंतःक्रिया की जाँच

एकीकरण परीक्षण जाँचते हैं कि सिस्टम के कई घटक एक साथ कैसे काम करते हैं। कोटलिन में यह Ktor Client का उपयोग करके REST API का परीक्षण या Exposed के माध्यम से डेटाबेस के साथ काम की जाँच हो सकती है।



2.1. Ktor के साथ REST API का परीक्षण

Ktor पर एक सरल सर्वर बनाएँ और उसका परीक्षण करें:

// सर्वरfun Application.module() {    routing {        get("/hello") {            call.respondText("Hello, Kotlin!")        }    }}

// परीक्षणclass ApiTest { @Test fun `test hello endpoint`() = testApplication { application { module() } val response = client.get("/hello") assertEquals(HttpStatusCode.OK, response.status) assertEquals("Hello, Kotlin!", response.bodyAsText()) }}


2.2. परीक्षण डेटाबेस के साथ काम करना

डेटाबेस के साथ एकीकरण परीक्षणों के लिए PostgreSQL के लिए H2 (मेमोरी में) या Testcontainers का उपयोग करें:

@Testfun `test user creation`() {    withTestDatabase {        val user = User.new {            name = "Bob"            email = "bob@test.com"        }        assertEquals("Bob", user.name)        assertNotNull(user.id)    }}

private fun withTestDatabase(block: () -> Unit) { Database.connect("jdbc:h2:mem: ```

ब्लॉग

पुस्तक अनुशंसाएँ