Kotlin में परीक्षण: यूनिट, इंटीग्रेशन, e2e शुरू से अंत तक

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

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

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

Kotlin में परीक्षण का परिचय: मॉड्यूल से उपयोगकर्ता अनुभव तक

Kotlin एक आधुनिक भाषा है जिसका उपयोग सर्वर-साइड (Ktor, Spring Boot), Android ऐप्स और मल्टीप्लेटफ़ॉर्म प्रोजेक्ट्स के विकास में सक्रिय रूप से किया जाता है। हालाँकि, सही परीक्षण के बिना कोड की गुणवत्ता संभव नहीं है। इस लेख में, हम तीन प्रमुख स्तरों पर चर्चा करेंगे: यूनिट (मॉड्यूलर), इंटीग्रेशन (एकीकरण) और e2e (एंड-टू-एंड) परीक्षण। आप जानेंगे कि किन उपकरणों का उपयोग करना है, Kotlin में परीक्षण कैसे लिखना है, और अपने एप्लिकेशन की जाँच के लिए एक विश्वसनीय रणनीति कैसे बनानी है।



1. Kotlin में यूनिट-परीक्षण: स्थिरता का आधार

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



उपकरण और सेटअप

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

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


MockK के साथ यूनिट परीक्षण का उदाहरण

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

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

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

import io.mockk.everyimport io.mockk.mockkimport org.junit.jupiter.api.Assertions.assertEqualsimport org.junit.jupiter.api.Test

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


यूनिट परीक्षण के सर्वोत्तम अभ्यास

  • एक परीक्षण — एक जाँच (समझदारी से assert का उपयोग करें)।
  • निर्भरताओं को अलग करें: मॉक (MockK) या स्टब का उपयोग करें।
  • परीक्षणों को स्पष्ट रूप से नाम दें: shouldReturnX_whenY।
  • सीमा मामलों का परीक्षण करें: null, खाली सूचियाँ, अपवाद।


2. इंटीग्रेशन-परीक्षण: घटकों के जुड़ाव की जाँच

इंटीग्रेशन परीक्षण जाँचते हैं कि वास्तविक घटक एक साथ कैसे काम करते हैं: डेटाबेस, API, फ़ाइल सिस्टम। Kotlin में इसके लिए Testcontainers और Ktor Client (यदि आप सर्वर लिख रहे हैं) का उपयोग करना सुविधाजनक है।



उदाहरण: PostgreSQL के साथ रिपॉजिटरी का परीक्षण

Testcontainers और exposed (डेटाबेस के साथ काम करने के लिए लाइब्रेरी) कनेक्ट करें:

dependencies {    testImplementation("org.testcontainers:postgresql:1.19.3")    implementation("org.jetbrains.exposed:exposed:0.44.1")}

UserRepository के लिए परीक्षण:

import org.junit.jupiter.api.*import org.testcontainers.containers.PostgreSQLContainerimport org.testcontainers.junit.jupiter.Containerimport org.testcontainers.junit.jupiter.Testcontainersimport org.jetbrains.exposed.sql.*

@Testcontainersclass UserRepositoryIntegrationTest {

@Container val postgres = PostgreSQLContainer<Nothing>("postgres:15").apply { withDatabaseName("testdb") withUsername("test") withPassword("test") }

private lateinit var repo: UserRepository

@BeforeEach fun setUp() { Database.connect(postgres.jdbcUrl, driver = "org.postgresql.Driver", user = postgres.username, password = postgres.password) transaction { SchemaUtils.create(Users) } repo = UserRepository() }

@Test fun `save and find user by id`() { val user = User(1, "Bob") repo.save(user) val found = repo.findById(1) assertEquals("Bob", found?.name) }

@AfterEa

ब्लॉग

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