कोटलिन में परीक्षण: विश्वसनीय कोड लिखने के लिए फ्रेमवर्क और उपकरण
कोटलिन एक आधुनिक भाषा है जिसका उपयोग Android ऐप्स, सर्वर-साइड समाधान (Ktor, Spring Boot) और मल्टीप्लेटफ़ॉर्म प्रोजेक्ट्स के विकास में सक्रिय रूप से किया जाता है। कोड की गुणवत्ता सीधे तौर पर परीक्षण कवरेज पर निर्भर करती है। इस लेख में, हम कोटलिन में परीक्षण के मुख्य उपकरणों पर चर्चा करेंगे: परीक्षण लिखने के लिए फ्रेमवर्क, मॉकिंग के लिए लाइब्रेरी और कोरूटीन की जाँच के लिए उपयोगिताएँ।
1. JUnit 5 — परीक्षण का आधार
JUnit 5 Java/Kotlin में यूनिट परीक्षण के लिए मानक फ्रेमवर्क है। यह एनोटेशन @Test, @BeforeEach, @AfterEach और एक्सटेंशन तंत्र (Extensions) प्रदान करता है। कोटलिन में, परीक्षण संक्षिप्त दिखते हैं:
import org.junit.jupiter.api.Testimport org.junit.jupiter.api.Assertions.*
class CalculatorTest { private val calculator = Calculator()
@Test fun `addition should work correctly`() { assertEquals(4, calculator.add(2, 2)) }
@Test fun `division by zero throws exception`() { assertThrows<ArithmeticException> { calculator.divide(10, 0) } }}कोटलिन के साथ JUnit 5 के उपयोग की विशेषताएँ:
- परीक्षणों के नाम बैकटिक्स में लिखे जा सकते हैं — इससे पठनीयता में सुधार होता है।
@Testऔरkotlinx-coroutines-testएक्सटेंशन के माध्यम से किसी भी कोरूटीन के साथ काम करता है।- पैरामीटरयुक्त परीक्षणों (
@ParameterizedTest) का समर्थन करता है।
2. Kotest — शक्तिशाली Kotlin-first फ्रेमवर्क
Kotest (पूर्व में KotlinTest) एक पूर्ण फ्रेमवर्क है जिसे विशेष रूप से कोटलिन के लिए विकसित किया गया है। यह परीक्षण लिखने की कई शैलियाँ प्रदान करता है: String Spec, Fun Spec, Describe Spec और अन्य। व्यवहार-संचालित विकास (BDD) का उपयोग करते हुए उदाहरण:
import io.kotest.core.spec.style.StringSpecimport io.kotest.matchers.shouldBe
class UserServiceTest : StringSpec({ "user should be created with correct name" { val user = UserService().createUser("Alice") user.name shouldBe "Alice" user.isActive shouldBe true }})Kotest के लाभ:
- संग्रह, स्ट्रिंग, संख्याओं के लिए अंतर्निहित मैचर्स (जाँच)।
- कोरूटीन, डेटा प्रदाताओं (
@TestFactory) और टाइम-आउट का समर्थन। projectConfigके माध्यम से लचीला परीक्षण कॉन्फ़िगरेशन।- Gradle और Maven के साथ एकीकरण।
3. MockK — कोटलिन के लिए मॉकिंग
MockK एक लाइब्रेरी है जो मॉक ऑब्जेक्ट बनाने के लिए है, जो कोटलिन की विशेषताओं को ध्यान में रखती है: suspend-फ़ंक्शन, extension-फ़ंक्शन, sealed-क्लास और object-सिंगलटन। उपयोग का उदाहरण:
import io.mockk.*import org.junit.jupiter.api.Test
class UserServiceTest { @Test fun `should call repository when saving user`() { val repo = mockk<UserRepository>() every { repo.save(any()) } returns Unit
val service = UserService(repo) service.saveUser("Bob")
verify { repo.save(any()) } }}MockK की प्रमुख क्षमताएँ:
mockk()— मॉक बनाना,spyk()— वास्तविक ऑब्जेक्ट का आंशिक मॉक।- कोरूटीन के साथ काम करने के लिए
coEveryऔरcoVerify। - कॉल ऑर्डर की जाँच (
verifyOrder), आर्गुमेंट कैप्चर (slot)। - एनोटेशन
@MockKऔर@RelaxedMockKका समर्थन।
4. कोरूटीन का परीक्षण: kotlinx-coroutines-test
कोरूटीन पर एसिंक्रोनस कोड का परीक्षण करते समय समय को नियंत्रित करना महत्वपूर्ण है। लाइब्रेरी kotlinx-coroutines-test runTest और TestCoroutineDispatcher प्रदान करती है:
import ko पुस्तकालय में भी
Rust में एप्लिकेशन मॉनिटरिंग: प्रदर्शन ट्रैकिंग के लिए लाइब्रेरी और टूल्स
Java में Markdown के साथ कार्य: लाइब्रेरीज़, पार्सिंग और रूपांतरण
Event Bus और Observer पैटर्न Swift में: कार्यान्वयन और उदाहरण